假设我有一个maven
项目,里面有一些maven模块。
依赖于其他模块,所以当我编译主模块时,它们应该一起编译。
问题是,如何将这些模块作为依赖项添加到主模块中?
我知道我是否有一个要与maven一起使用的自定义库,假设utilities project
,我必须编译项目的jar,对其进行mvn install:install-file
以将其安装在本地存储库中,然后将其添加到pom.xml
中。
我是否必须对所有模块执行此操作并将依赖项添加到主模块上的pom.xml
?因为如果应该这样做,那么在更改其他模块上的代码时将有很多工作要做。
模块编译/安装到本地存储库的麻烦的最佳实践是什么?
问题是,如何将这些模块作为依赖项添加到主模块中?
与将任何其他依赖项添加到 maven 项目的方式相同。通过将组 ID、工件 ID 和版本添加到<dependency>
元素
我是否必须对所有模块执行此操作,并将依赖项添加到主模块上的pom.xml?
如果您的主模块依赖于某个模块 A,则只有主模块的 pom 应包含对模块 A 的依赖声明。您可以对模块的所有依赖项执行此操作。
我不知道您所说的"更改其他模块上的代码时需要大量工作"是什么意思。Maven 与代码更改无关,它只是构建项目,无论它们在给定时刻是什么样子......
使用避免将模块编译/安装到本地存储库的麻烦的最佳实践是什么?
您调用mvn install
的任何项目都会生成,并将其 jar 复制到本地存储库。这就是将罐子放入存储库所需要做的就是。这还会将所有依赖 jar(如果可用)放入本地存储库中。
至于多模块项目的最佳实践:
如果您的父项目(内部有模块的项目)<modules>
列出应用程序模块的部分,并且模块位于父项目的子目录中,那么您只需mvn install
(或任何您想做的事情)父项目,这将导致所有模块按它们之间声明的依赖关系定义的顺序构建。这意味着,如果您的主模块依赖于模块 A,那么模块 A 将在主模块之前构建。这样,您可以使用一个命令构建和安装所有模块。另一方面,这种方法使模块之间的耦合更加紧密,这在某些情况下是不需要的,因此它是否是一种好方法取决于您的用例。