Maven-版本化父pom和子pom以继承父pom版本
我正在使用Maven 3.x,在我的父pom和子pom中有以下结构 母体聚甲醛Maven-版本化父pom和子pom以继承父pom版本,maven,maven-3,Maven,Maven 3,我正在使用Maven 3.x,在我的父pom和子pom中有以下结构 母体聚甲醛 <groupId>com.mygoogle.sample</groupId> <artifactId>workorder</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <properties> <pr
<groupId>com.mygoogle.sample</groupId>
<artifactId>workorder</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<project.version>1.0-SNAPSHOT</project.version>
</properties>
com.mygoogle.sample
工单
1.0-快照
聚甲醛
1.0-快照
我有一个孩子pom,如下所示
<parent>
<groupId>com.mygoogle.sample</groupId>
<version>${project.version}</version>
<artifactId>workorder</artifactId>
</parent>
<artifactId>workorder-client</artifactId>
<packaging>jar</packaging>
com.mygoogle.sample
${project.version}
工单
工单客户端
罐子
当我使用mvn安装构建工件时,
我看到JAR正在我的.m2文件夹中构建,但project.version没有被实际版本(即1.0-SNAPSHOT)替换
您的父pom应该如下所示:
<groupId>com.mygoogle.sample</groupId>
<artifactId>workorder</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<parent>
<groupId>com.mygoogle.sample</groupId>
<version>1.0-SNAPSHOT</version>
<artifactId>workorder</artifactId>
</parent>
<artifactId>workorder-client</artifactId>
<packaging>jar</packaging>
com.mygoogle.sample
工单
1.0-快照
聚甲醛
您的孩子pom应该是:
<groupId>com.mygoogle.sample</groupId>
<artifactId>workorder</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<parent>
<groupId>com.mygoogle.sample</groupId>
<version>1.0-SNAPSHOT</version>
<artifactId>workorder</artifactId>
</parent>
<artifactId>workorder-client</artifactId>
<packaging>jar</packaging>
com.mygoogle.sample
1.0-快照
工单
工单客户端
罐子
这将有助于顺利维护父级和子级之间的版本控制。下次要更改版本时,只需使用下面的命令,同时指向父pom目录
mvn版本:set-DnewVersion=2.0-SNAPSHOT
可能的副本您需要指定
,不能依赖项目。version
属性:它不在
元素中计算。@Tunaki,刚刚编辑了我的原始帖子,我本来打算在父pom中指定实际版本,但指定了{project.version}属性,我现在已经更正了。那么,在上面的设置中,为什么我的子pom没有在父pom中获取该属性。对于最初的混淆,我深表歉意。正如链接问题中所回答的,您不能有${project.version}
。你必须在
元素中有1.0-SNAPSHOT
。我可以在我的子pom中有{project.version}吗,如下com.mygoogle.sample${project.version}workorder workorder client jar刚编辑了我的原始帖子,我本打算在父pom中指定实际版本,但指定了{project.version}属性。那么,在上面的设置中,为什么我的子pom没有在父pom中拾取属性?您不能使用${project.version}
因为在子pom中没有定义这样的属性。所以继承不会首先发生。可能您会对它将从父pom继承感到困惑。但是由于未定义${project.version}
属性,子pom将无法解析${project.version}
value。因此不会发生继承。