我有一个复杂的Maven项目,其模块和子项目最多可达四级继承。此外,一些模块依赖于不在同一“子树”中的模块,我想知道每次模块依赖时我是否可以避免表达版本。
例如我有
a
-b
-c
-d
-e
假设模块e
取决于c
,以干燥方式指定版本的最佳方法是什么?
如果在模块e
的pom.xml中,我没有指定我想要的c
模块版本,那么我的构建将失败。有没有一种聪明的方法来处理这个版本问题?
答案 0 :(得分:2)
groupId和artifactId表示maven中的单个项目,但必须指定版本(或从父pom继承)以确定maven需要引用的项目版本。它似乎是多余的,但如果有许多不同的版本,它是必要的。
答案 1 :(得分:1)
最好的方法是在项目根目录中的dependencyManagement块中定义具有相应版本号的所有工件,如:
a (pom.xml)
-b
-c
-d
-e
以下内容:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>project</groupId>
<artifactId>b</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>project</groupId>
<artifactId>c</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>project</groupId>
<artifactId>d</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>project</groupId>
<artifactId>e</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
但是使用给定的结构:
a (pom.xml)
-b
-c
-d
-e
必须包括模块列表(包装pom),b(包装pom)和d(包装pom),这意味着a,b和d永远不会被用作依赖关系,这意味着你可以从上面省略它们块。