我有以下pom定义(底部)。
我有很多子poms(50个项目),要求我更新每个版本的所有poms,例如,从1.0
移动到1.1
时。
如何在一个地方定义版本,并在所有poms中重复使用?
编辑 - 关于请求的一些动机:我希望在切换版本时尽可能减少占用空间。随着小文件的改变。因为很少提交推动。等
编辑 - 在加载父级之前无法使用父级属性。
<parent>
<groupId>info.fastpace</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>child-1</artifactId>
答案 0 :(得分:1)
我可以使用父级的属性,并使用相对路径而不是版本来引用父级。例如:
<强>父:强>
<groupId>info.fastpace</groupId>
<artifactId>parent</artifactId>
<version>${global.version}</version>
<properties>
<!-- Unique entry point for version number management -->
<global.version>1.0-SNAPSHOT</global.version>
</properties>
儿童:强>
<parent>
<groupId>info.fastpace</groupId>
<artifactId>parent</artifactId>
<version>${global.version}</version>
<relativePath>..</relativePath>
</parent>
<artifactId>child-1</artifactId>
缺点:要求父pom存在于文件系统中,并使所有开发人员使用相同的相对文件结构。
查看更多信息here。
答案 1 :(得分:0)
您可以使用maven属性构建单个版本编号方案。 像这样:
<properties>
<my.version>1.1.2-SNAPSHOT</my.version>
</properties>
然后像这样引用它:
<version>${my.version}</version>
点击此处了解更多信息: Maven version with a property
答案 2 :(得分:-1)
如果您具有同一版本的多个依赖项,则建议使用属性。例如:
<project>
...
<properties>
...
<dep.jooq.version>3.7.3</dep.jooq.version>
...
</properties>
...
<dependencies>
...
<dependency>
<groupId>org.jooq</groupId>
<artifactId>jooq</artifactId>
<version>${dep.jooq.version}</version>
</dependency>
<dependency>
<groupId>org.jooq</groupId>
<artifactId>jooq-meta</artifactId>
<version>${dep.jooq.version}</version>
</dependency>
<dependency>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen</artifactId>
<version>${dep.jooq.version}</version>
</dependency>
...
</dependencies>
...
</project>
相反,如果您必须在POM文件中的不同点使用相同的依赖项,或者如果您在模块中并且您将使用父项的相同依赖项版本,我建议使用以下方式:
<project>
...
<dependencyManagement>
<dependencies>
...
<dependency>
<groupId>group-a</groupId>
<artifactId>artifact-a</artifactId>
<version>1.0</version>
</dependency>
...
<dependencies>
</dependencyManagement>
...
<dependencies>
...
<!-- The following block could be in a module -->
<dependency>
<groupId>group-a</groupId>
<artifactId>artifact-a</artifactId>
<!-- It is no more ncessary to use the version -->
</dependency>
...
<dependencies>
...
</project>