如何在Eclipse的m2e插件中引用另一个工作区项目?
我是否需要在项目设置中添加项目依赖项? 但是在这种情况下,依赖关系不会显示在pom文件中。
如果我将它们设置在pom文件中,它将不会引用工作区中的项目,而是引用本地仓库中的jar包。这非常烦人,有没有人可以帮忙?
这应该能解决您的问题。如果在执行上述步骤之后,您的依赖项仍然是从文件系统中引用的,请再次检查每个依赖项的groupId、artifactId和尤其是version。
还要检查您的项目是否有任何错误-尝试运行Maven install。
mvn eclipse:eclipse
,那么你可能会遇到麻烦。我曾经遇到这样一种情况,我的eclipse项目中有一个“Referenced Libraries”部分和一个“Maven Dependencies”部分,它们的库版本发生了冲突,导致eclipse和我自己都感到困惑。mvn eclipse:clean
,然后重新进入eclipse,刷新项目,“OK”出现的问题对话框,然后进行Maven > Update Project。这样就可以解决所有问题。1.0.0
),并且在同时使用应用程序和库项目设置为SNAPSHOT版本的下一个版本时(假设为2.0.0-SNAPSHOT
),m2e将无法正确解析库版本,并且很可能会下载旧版本,因此尝试使用Eclipse功能(如“打开声明”)将针对下载的jar文件(有时甚至没有源附件),这可能非常令人恼火。
解决这个问题的一种方法是将应用程序POM依赖版本设置为范围,因此您不会依赖于1.0.0
,而是依赖于[1.0.0-)
。像这样的开放范围,m2e将很高兴地找到您的工作区库项目。但是在提交,构建和发布之前,您需要将其设置回“正确”的版本 - 这可能非常容易出错。
我的解决方案是使用构建配置文件,并为m2e设置自定义配置文件,如下所示:
...
<properties>
<my.library.version>1.0.0</my.library.version>
</properties>
<dependencies>
<dependency>
<groupId>my.group</groupId>
<artifactId>my.library</artifactId>
<version>${my.library.version}</version>
</dependency>
</dependencies>
...
...
<profiles>
<profile>
<id>default</id>
<activation><activeByDefault></activeByDefault></activation>
</profile>
<profile>
<id>eclipse</id>
<properties>
<my.library.version>[1,)</my.library.version>
</properties>
</profile>
</profiles>
...
Eclipse m2e将始终看到版本范围,并从Eclipse项目解析依赖项(即使您已将库安装在本地Maven存储库中,因为Eclipse项目将具有更高的版本号),但其他构建器将看到原始严格的版本号。