简而言之,我想做的是一次性构建一堆库和应用程序,所有 Maven 项目。据我了解,只需在一个命令行运行 mvn package
即可完成此任务,方法是创建一个多模块项目,该项目将列出我想要构建的每个模块,将它们放入 Maven react 器中,然后进行构建。
根据 Maven 书中的示例,多模块 pom
通常位于各个模块之上的目录中。然而,通常情况下,父 pom
位于模块上方的目录中,这就提出了一个问题,多模块构建通常也应该是父级吗?我想不是;然而我想知道为什么我会遇到这种有趣的设计怪癖。
所以,我想知道设置此功能的正确方法。我看到以下约定/要求:
- 多模块
pom
必须了解其他模块在光盘上的位置。由于它实际上是从源代码进行构建,因此它不能简单地依赖已安装的版本(因为它正在安装它们!) - 父目录实际上不必是物理目录,尽管这样更好。我认为这是最好打破的惯例。
- 实际上,各个库/应用程序甚至不需要知道它们是作为多模块构建的一部分构建的。
在多模块构建中通常如何设置?有没有更简单的方法来管理同时构建多个 Maven 项目?
最佳答案
我将所有单独的模块放在根模块中。 Some software难以处理多层层次结构。
要使子模块在同一级别引用其父模块:
<parent>
<groupId>com.domain</groupId>
<artifactId>xyz</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../xyz/pom.xml</relativePath>
</parent>
我建议您不要在多模块中放置单个模块需要继承的任何内容(例如属性)。如果这样做,您将无法独立构建其他模块。
关于java - 在继承父 pom 的同时管理 Maven 多模块构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14104217/