繁体   English   中英

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

[英]Multi-module IntelliJ project with maven - How to add dependencies from one module to another?

假设我有一个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 on的任何项目都会被构建,并且它的jar被复制到本地存储库。 这就是让罐子进入仓库所需要做的一切。 这也将把所有相关的罐子(如果有的话)放入本地仓库。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM