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

2022-09-04 01:23:39

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

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

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

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

mvn compile并完美地工作,其中自动从我的存储库下载。但是,在尝试时,我发现生成的文件不包含预期的依赖项。相反,它包含 mylib 的源文件目录,如下所示。mvn testmylib.jarmvn eclipse:eclipse.classpathmylib.jar

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

Maven 似乎读取了 Eclipse 的元数据,并发现 mylib 和主项目在同一个工作区中共存。因此,maven包括了我好的来源。该死。如何告诉 maven 忽略本地项目源代码,只包含 jar 文件?


答案 1

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

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

它默认为 ,但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>

或作为命令行上的属性:

mvn eclipse:eclipse -Declipse.useProjectReferences=false

答案 2

我需要避免将依赖项作为折射项目包含在内,而是作为 jar。使用Eclipse 4.6 Neon之前的解决方案都不起作用。

我已禁用该功能Workspace Resolution

click on the project -> Maven -> Disable Workspace Resolution

推荐