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

Jia*_* W. 14 java eclipse maven

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

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

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

<!-- pom.xml for the main project -->
<dependency>
  <groupId>namespace.my</groupId>
  <artifactId>mylib</artifactId>
  <version>[1.0, )</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

mvn compile并且mvn test工作完美,mylib.jar从我的仓库自动下载.但是,在尝试时mvn eclipse:eclipse,我发现生成的.classpath文件不包含mylib.jar预期的依赖项.相反,它包括mylib的源文件目录,如下所示.

<!-- .classpath file generated by mvn eclipse:eclipse -->
<classpathentry kind="src" path="/mylib"/>
Run Code Online (Sandbox Code Playgroud)

似乎Maven读取Eclipse的元数据并找到mylib并且主项目在同一工作区中共存.因此,maven包含了我的好处.该死的.如何告诉maven忽略本地项目源并只包含jar文件?

Jam*_*ett 12

我相信这实际上是因为它们是Eclipse中的相​​关项目.因此,如果您右键单击主项目并转到Project References您的lib项目,则应勾选.

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

它默认为true,但是

设置为false时,插件不会创建子项目,而是使用本地存储库中已安装的包引用这些子项目

要使用该属性,请在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>
Run Code Online (Sandbox Code Playgroud)

或者作为命令行上的属性:

mvn eclipse:eclipse -Declipse.useProjectReferences=false
Run Code Online (Sandbox Code Playgroud)


Pan*_*ciz 11

我需要避免将依赖项包含为refrenced项目,而是作为jar.使用Eclipse 4.6 Neon以前的解决方案都不起作用.

我已禁用该Workspace Resolution功能

click on the project -> Maven -> Disable Workspace Resolution
Run Code Online (Sandbox Code Playgroud)