Java 是否可以将父版本作为属性提供给子版本?

Java 是否可以将父版本作为属性提供给子版本?,java,maven,dependencies,pom.xml,dependency-management,Java,Maven,Dependencies,Pom.xml,Dependency Management,是关于Maven POM的 如果我想让父项的版本也成为依赖项的版本,我必须设置一个值为${project.Parent.Version}的属性 然后,当我的主POM的子级(其中包含${project.parent.version}属性,因为它是我不管理的某个项目的父级)重新计算该属性并认为创建的属性的值现在是我的主POM的版本时,就会出现问题 --SuperParent (not in my Administration) | Version = 1.2.3 ----MainPom | Ver

是关于Maven POM的

如果我想让父项的版本也成为依赖项的版本,我必须设置一个值为${project.Parent.Version}的属性

然后,当我的主POM的子级(其中包含${project.parent.version}属性,因为它是我不管理的某个项目的父级)重新计算该属性并认为创建的属性的值现在是我的主POM的版本时,就会出现问题

--SuperParent (not in my Administration) | Version = 1.2.3

----MainPom | Version = 1.0.0 | Property <test>${project.parent.version}</test> -> 1.2.3

------Child Pom | Version 1.0.0 | Property ${test} is now 1.0.0
--SuperParent(不在我的管理中)| Version=1.2.3
----MainPom | Version=1.0.0 | Property${project.parent.Version}->1.2.3
------子Pom |版本1.0.0 |属性${test}现在是1.0.0


groupId
人工的
1.2.3
其他组ID
其他人工关节
1.0.0
groupId
人工的
1.2.3
${project.parent.version}
dependencyGroupId
附属国
${dependency.version}
childGroupId
儿童人工关节
1.0.0
其他组ID
其他人工关节
1.0.0
dependencyGroupId
附属国
最后是子Pom 1.0.0中的属性${dependency.version},而不是1.2.3。 这是Maven的通缉行为吗?我该怎么做才能让它工作呢

无法改变的事情:

  • 超级妈妈
  • 主Pom版本

Maven首先处理继承以构建有效的pom,然后处理变量扩展

换句话说,对于每个子pom,父pom和子pom内容作为单个合并文件进行处理。因此,在处理子pom时${project.parent.version}是1.0.0,而不是1.2.3


我找不到引用pom的“祖父母”的方法,因此似乎唯一的解决方案是在parent.version和properties.dependency.version中都将版本作为静态数字放置。

因此,当SuperPAM的版本更改时,唯一可能的方法是更改两个字段(父级中的版本和属性)基本上是的。您不能在parent.version字段中使用变量,因为您试图在处理变量之前加载父级。这绝对令人沮丧。
<project>
<!-- Super Pom -->
 <groupId>groupId</groupId>
    <artifactId>artifactId</artifactId>
    <version>1.2.3</version>
</project>

<project>
<!-- MainPom -->
    <groupId>othergroupId</groupId>
    <artifactId>otherartifactId</artifactId>
    <version>1.0.0</version>
    <parent>
         <groupId>groupId</groupId>
         <artifactId>artifactId</artifactId>
         <version>1.2.3</version>
     </parent>
     <properties>
     <dependency.version>${project.parent.version}</dependency.version>
     </properties>
     <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>dependencyGroupId<groupId>
                <artifactId>dependency</artifactId>
                <version>${dependency.version}</version>
            </dependency>
        </dependencies>
     </dependencyManagement>
</project>
<project>
<!-- ChildPom -->
    <groupId>childGroupId</groupId>
    <artifactId>childArtifactId</artifactId>
    <version>1.0.0</version>
    <parent>
         <groupId>othergroupId</groupId>
         <artifactId>otherartifactId</artifactId>
         <version>1.0.0</version>
     </parent>
        <dependencies>
            <dependency>
                <groupId>dependencyGroupId<groupId>
                <artifactId>dependency</artifactId>
            </dependency>
        </dependencies>
</project>