在以下情况下,我正在使用mvn 3.6.1,并且我无法正确解决$ {revision}:
父回购(单独回购): top / pom.xml:
<groupId>com.x</groupId>
<artifactId>top</artifactId>
<version>${revision}</version>
mvn -Drevision = 1.0.0 clean deploy#在本地.m2中可以很好地安装,并且可以很好地部署到Nexus
派生子回购(单独回购)
<groupId>com.x</groupId>
<artifactId>child</artifactId>
<version>${revision}</version>
<parent>
<groupId>com.x</groupId>
<artifactId>top</artifactId>
<version>${revision}</version> <!-- This is not resolving -->
<relativePath/>
</parent>
mvn -Drevision = 1.0.0全新安装 引发错误无法解析的父pom错误:
Non-resolvable parent POM for com.x:child:${revision}: Could not transfer artifact com.x:top:pom:${revision} from/to nexus ($nexusUrl): Failed to transfer file ${nexusUrl}/com/x/top/$%7Brevision%7D/top-$%7Brevision%7D.pom with status code 400 and 'parent.relativePath' points at no local POM @ line 12, column 1
,因为它实际上是在寻找“ com.x:top:pom:$ {revision}”而不是thevue。即使删除标签,也会发生相同的错误。
如果我将以下父级与本地relativePath一起使用,则效果很好:
<parent>
<groupId>com.x</groupId>
<artifactId>top</artifactId>
<version>${revision}</version>
<relativePath>../top</relativePath>
</parent>
总而言之,如果使用不带relativePath的parent:$ {revision},则mvn始终尝试按字面解析$ {revision},而不是提供的-D值。
我还尝试了像mvn -Dparent.revision = 1.0.0这样的变体,也没有起作用。
任何指针表示赞赏!