我有一个多模块maven项目,其结构如下:
projectA-parent
- module-1
- module-2
我有另一个项目,我希望将projectA-parent
中的所有模块作为运行时依赖项引入(它是一个Spring应用程序,projectA-parent
中的每个模块都包含我想要的Spring服务能够自动装配)。
我想做的事情就像是
<dependency>
<groupId>projectA-group</groupId>
<artifactId>projectA-parent</artifactId>
<scope>runtime</scope>
</dependency>
因此,如果我向projectA-parent
添加另一个模块,它会自动作为运行时依赖项引入(即,我不想将每个新模块作为依赖项添加到我的Spring应用程序中我添加它们)。这样的事情有可能吗?
答案 0 :(得分:2)
我想我只是添加了一个引用项目中其他模块的模块,例如:
projectA-parent
- module-1
- module-2
- module-deps
将module-deps
作为jar或pom,取决于module-1
和module-2
。
在添加更多模块时,您必须更新module-deps
,但至少它只在一个地方。
答案 1 :(得分:1)
你必须使用
<dependencies>
<dependency>
<groupId>projectA-parent-groupId</groupId>
<artifactId>projectA-parent-artifactId</artifactId>
<type>pom</type>
</dependency>
</dependencies>
这会将com.my:commons-deps中声明的所有依赖项传递给您当前的POM。
使用
<dependencyManagement>
<dependencies>
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
作为一个简单的包含&#39;您的依赖关系管理中的工件版本。因此,它不会在您的项目中添加任何依赖项。
<强>更新强>
另一个方法是使用BOM(物料清单)。查看此link以了解BOM
的用法。它隐藏在底部的某个地方。
您可以创建一个BOM表,将所有模块列为依赖项,然后您可以将BOM包含在pom.xml中,如下所示:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>your_bom_group_id</groupId>
<artifactId>your_bom_artifact_id</artifactId>
<version>you_bom_version</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>