带有maven的多模块IntelliJ项目 - 如何将依赖项从一个模块添加到另一个模块?

时间:2014-12-22 17:17:06

标签: java maven intellij-idea

我们说我有一个maven项目,里面有一些maven模块。

我的主模块依赖于其他模块,因此当我编译主模块时,它们应该被编译在一起。

问题是,如何将这些模块作为依赖项添加到主模块?

我知道如果我有一个我想要与maven一起使用的自定义库,让我们说一个utilities project,我必须编译项目的jar,做一个mvn install:install-file on它将它安装在本地存储库中,然后将其添加到pom.xml

我是否必须对所有模块执行此操作并将依赖项添加到主模块上的pom.xml?因为如果它应该这样做,在更改其他模块上的代码时将会有很多工作要做。

使用哪种最佳实践避免了将模块编译/安装到本地存储库的麻烦?

1 个答案:

答案 0 :(得分:3)

问题是,如何将这些模块作为依赖项添加到主模块?

与向maven项目添加任何其他依赖项的方式相同。通过将组ID,工件ID和版本添加到<dependency>元素

我是否必须对所有模块执行此操作并将依赖项添加到主模块上的pom.xml中?

如果您的主模块依赖某个模块A,那么主模块的pom应包含对模块A的依赖声明。您可以对所有依赖项进行你的模块。

我不知道你在更改其他模块上的代码时做了多少工作&#34;。 Maven与代码更改无关,它只是在给定时刻构建项目的任何内容......

使用的最佳做法是避免将模块编译/安装到本地存储库的麻烦吗?

您调用mvn install的任何项目都会被构建,并且它的jar被复制到本地存储库。这就是让罐子进入仓库所需要做的一切。这也将把所有相关的罐子(如果有的话)放入本地仓库。

关于多模块项目的最佳实践:

如果你的父项目(里面有模块的项目)有<modules>部分列出了你的应用程序的模块,而模块在你父项目的子目录中,那么你只需mvn install(或无论你想做什么)父项目,这将导致所有模块按照它们之间声明的依赖关系定义的顺序构建。这意味着如果您的主模块依赖于模块A,那么模块A将在主模块之前构建。这样,您可以使用一个命令构建和安装所有模块。另一方面,这种方法在模块之间进行更紧密的耦合,这在某些情况下是不希望的,因此它取决于您的用例是否是一种好的方法。