2011-11-30 41 views
1

我试图寻找存在的问题,但无法找到任何 - 感觉就像我的问题很简单,但可能是因为它是非常具体的我不能找到#2 /谷歌的答案。Maven的依赖和eclipse的classpath

不管怎么说 - 我与Maven的一些项目是互相依赖的。在某些情况下,我希望依赖项位于JAR上而不是项目依赖项(即,我希望依赖项成为Eclipse中“库”的一部分,而不是构建路径中的“项目”)。

非常感谢您的帮助!由于

回答

3

要获取引用的项目在同一工作区作为jar文件而不是项目,我们可以使用VM参数-Declipse.useProjectReferences = false或将其添加到pom文件中。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-eclipse-plugin</artifactId> 
    <version>2.9</version> 
    <configuration> 
     <useProjectReferences>false</useProjectReferences> 
    </configuration> 
    </plugin> 

更多信息请参阅本URL

2

在Eclipse中的项目属性,选择Maven的。有一个复选框'解决工作区项目的依赖关系'。如果选中,则使用Eclipse项目。否则,像其他maven依赖项一样使用jar,假设你正常情况下在你的pom.xml中有依赖关系。

编辑:如果你的项目是不是一个Maven项目,那么你就必须建立在Eclipse外部的jar并将其添加为一个瓶子或罐子外部正常。如果该项目是一个maven项目,那么上面的工作就会起作用。

+0

我没有看到项目属性下的“Maven”选项,我也没有看到任何地方的复选框。我正在使用Eclipse Indigo,并且我有Eclipse插件的Maven集成 –

+0

这些项目实际上是Maven项目吗?你有类路径等maven依赖吗? –

+0

classpath确实有maven依赖关系(库依赖关系到M2_REPO等)。该项目本身不是Maven项目,我尝试安装Eclipse IAM插件来执行“转换到Maven项目”,但我得到了“所选操作目前不可用” –

0

Client-Project取决于Services-Project。如果Services-Project生成JAR。在Client-Project POM中,您将表达对此JAR的依赖关系。这将是这样的:如果服务项目生成JAR称为com.mycompany.services-1.3.jar

<dependency> 
    <groupId>group.id.of.services.project.goes.here</groupId> 
    <artifactId>artifact.id.of.services.project.goes.here</artifactId> 
    <version>version.number.of.services.jar</version> 
</dependency> 

,依赖将是:

<dependency> 
    <groupId>com.mycompany</groupId> 
    <artifactId>services</artifactId> 
    <version>1.3</version> 
</dependency> 
+0

这就是我所做的,并且我添加了 jar以及.. 。每次我做mvn eclipse:eclipse它会更新我的类路径以取决于项目 –

+0

然后请参阅@Matthew Farwell的建议。您可能选择了“解决Workspace项目的依赖关系”选项。 –