我使用Apache来管理我的Java库(jar)和一些使用libs的项目。为了方便起见,我使用mvn eclipse:eclipse生成Eclipse文件,这些文件可以导入Eclipse工作区进行编辑。
在同一个Eclipse工作区中编辑主项目和Java项目时会出现问题。也就是说,mvn eclipse:eclipse在.classpath文件中包含src路径依赖项,而不是预期的jar依赖项。
假设我有一个名为mylib的Jave项目。相应的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>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"/>Maven似乎读取Eclipse的元数据,并在同一个工作区中找到mylib和主项目共存。因此,maven包含了我的好消息来源。见鬼。我如何告诉maven忽略本地项目源,只包含jar文件?
发布于 2012-09-25 06:30:40
我相信这实际上是因为它们是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>或作为命令行中的属性:
mvn eclipse:eclipse -Declipse.useProjectReferences=false发布于 2015-12-29 15:48:57
我需要避免将依赖项作为一个经过修改的项目,而是作为一个jar来包含。使用Eclipse4.6Neon之前的解决方案都不起作用。
我禁用了Workspace Resolution功能
click on the project -> Maven -> Disable Workspace Resolution发布于 2012-09-25 08:07:23
谢谢猎犬的提示。是的,useProjectReferences控制Maven如何处理子项目--包括源dir或包含jar文件。
我还没有为Eclipse安装maven插件,所以我在pom.xml中添加了以下配置。它告诉Maven在本地maven repo中包含jar依赖项,而不是源dir。如果本地回购中不存在所需的jar文件,则将自动下载该文件。
  <!-- pom.xml for the main project: include jar, not src path -->
  <plugin>
  <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-eclipse-plugin</artifactId>
    <version>2.9</version>
    <configuration>
            <useProjectReferences>false</useProjectReferences>
    </configuration>
  </plugin>现在,mvn eclipse:eclipse按预期工作。
https://stackoverflow.com/questions/12577175
复制相似问题