java – 如何告诉Maven包含jar依赖关系,而不是Eclipse中的子项目源目录?

我使用Apache Maven来管理我的Java库(jar)和一些使用这些库的项目.为了方便,我使用mvn eclipse:eclipse生成可以导入到Eclipse工作区进行编辑的Eclipse项目文件.

当我在同一个Eclipse工作区中编辑主项目和Java lib项目时出现问题.也就是说,mvn eclipse:eclipse在.classpath文件中包含src路径依赖,而不是预期的jar依赖.

说我有一个名为mylib的Jave lib项目.相应的jar文件mylib.jar已经被部署到由我维护的一个私有的Maven repo.为了在主项目中使用mylib.jar,pom.xml中包含以下依赖项.

<!-- pom.xml for the main project -->
<dependency>
  <groupId>namespace.my</groupId>
  <artifactId>mylib</artifactId>
  <version>[1.0, )</version>
</dependency>

mvn编译和mvn测试工作完美,其中mylib.jar从我的repo自动下载.但是,当尝试mvn eclipse:eclipse时,我发现生成的.classpath文件不包括mylib.jar依赖性.相反,它包括mylib的源文件目录如下.

<!-- .classpath file generated by mvn eclipse:eclipse -->
<classpathentry kind="src" path="/mylib"/>

看起来Maven读取Eclipse的元数据并找到mylib,并且主项目在同一个工作空间中共存.因此,maven包含了我的好消息来源.该死的.我怎么能告诉maven忽略本地的项目源,只包括jar文件?

最佳答案
我相信这其实是因为它们是Eclipse中的相​​关项目.所以如果您右键单击您的主要项目并转到项目引用您的lib项目应该被勾选.

如果运行mvn eclipse:eclipse,它会自动为任何子项目(模块)添加项目引用.您可以使用maven eclipse插件的useProjectReferences属性进行更改.

它默认为true,但是

When set to false, the plugin will not create sub-projects and instead
reference those sub-projects using the installed package in the local
repository

要使用该属性在pom.xml中设置属性

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

或作为命令行上的属性:

mvn eclipse:eclipse -Declipse.useProjectReferences=false

转载注明原文:java – 如何告诉Maven包含jar依赖关系,而不是Eclipse中的子项目源目录? - 代码日志