在 m2e 多模块项目中,导入项目的类路径脱链

In m2e multimodule project delinking of classpath of imported projects

假设我有。

top/
|-parent/pom.xml
|-module1/pom.xml
|-module2/pom.xml ->depends on module1-SNAPSHOT.jar

m2e 的一个不错的功能是,如果我在 eclipse 中导入两个多模块模块,并且如果其中一个依赖于另一个,那么它们的构建 output/classes 目录将被链接。我不需要在 module1 上安装 maven,module2 仍会获取 module1 上的最新更改。

虽然这对于较小的项目或较少的模块来说是个不错的功能。但是当更新一个项目开始对所有其他项目进行级联构建时会变得很痛苦。另外,每次我在工作区中添加或删除项目时,向 Eclipse 添加更多模块都不会影响整个工作区的构建。

那么问题来了: m2e 是否可以直接引用 .m2 存储库中的 SNAPSHOT jar 文件?如果我想让 module1 的最新版本可供 module2 使用。我将不得不安装 maven 模块 1,它将在 .m2 存储库中创建 SNAPSHOT.jar 文件。

注意:我使用的是 eclipse luna + j2ee.Version: Luna Service Release 2 (4.4.2) 内部版本号:20150219-0600。所以我使用的是默认的maven m2e-wtp。

您需要在要使用快照 jar 引用的项目上基本上禁用工作区解析。所以右键单击你的 web 项目,然后执行

Maven > Disable Workspace Resolution

从现在开始,Web 项目将不再引用其工作区项目依赖项,而是引用已安装在本地 Maven 存储库中的 jar。但请注意,它是全有或全无:您不能让一些项目仍然被您的 Web 项目引用,而其他项目则被它们的快照 jar 引用。这会迫使您在每次进行修改时 运行 mvn install 对您的项目依赖项。

另一种选择是关闭您不打算经常修改的项目。关闭后,m2e 将使用本地 Maven 存储库中的引用。