我有15个项目的层次结构(-ear,-web,javaFX应用程序,公共库),所以它就像一个普通的maven树:
PROJECT-ROOT
- PROJECT1
-- PROJECT1-EAR
-- PROJECT1-WEB
- PROJECT2
-- PROJECT2-EAR
-- PROJECT2-WEB
- PROJECT3-COMMON-LIB
- PROJECT4-JAVAFX
除了PROJECT-ROOT
之外,每个项目都有自己的父项。事情是,为了编译PROJECT4-JAVAFX
我需要在根项目上运行编译,这需要一些额外的时间并且已经烦人了。如果我在子项目PROJECT4-JAVAFX
中运行编译(或打包任何内容),它不能只找到PROJECT3-COMMON-LIB
,因为它在依赖项列表中,并且失败并带有ERROR。
我怎么解决这个问题?我在开发过程中需要能够编译maven项目树的一部分。我的IDE是IntelliJ,但显然不重要,但热插拔也应该有效。
有可能mvn install
它,但是来吧,我正在开发,我还不想触摸我的本地存储库。
更新: 所以再一次澄清。我想要实现的目标:
能够为一个特定模块编译仅依赖和更改的模块。我不想跟踪这些更改,我想将其留给构建工具。最后一件事是清理/编译整个项目。
但是我在IntelliJ中找到了 - Resolve workspace conflicts
。它只是编译依赖模块(它的Maven配置)。
答案 0 :(得分:1)
为什么不使用mvn install?它将编译,打包并将工件发布到本地存储库。在您这样做之前,特定模块不会 可用于其他maven项目作为依赖。
此外,您只需要构建一次root。这将构建和发布所有子模块。除非你在那里改变一些东西,否则你不需要再建造它们。之后,您应该只编译/打包所需的子模块(在您的情况下,PROJECT4-JAVAFX)。
此外,我认为您不需要在第一次使用后明确使用 mvn install 。如果您在Eclipse中选择了自动构建(不确定IntelliJ),它应该调用maven builder来自动构建项目和任何依赖项目。
答案 1 :(得分:0)