Maven是否可以从其他配置值访问配置值?例如,在Release Plugin中,可以在project.version
元素的配置期间访问tagNameFormat
密钥。我想要做的是然后在另一个名为tagNameFormat
的元素中使用completionGoals
值。见下文:
<!-- Snippet from a POM -->
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<tagNameFormat>${my.pom.property}@{project.version}-${my.pom.property.extra}</tagNameFormat>
<checkModificationExcludes>
<checkModificationExclude>pom.xml</checkModificationExclude>
</checkModificationExcludes>
<completionGoals>clean verify help:evaluate -Dexpression=${tagNameFormat}</completionGoals>
</configuration>
<executions>
<execution>
<id>default</id>
<goals>
<goal>prepare</goal>
<goal>perform</goal>
</goals>
<configuration>
<pomFileName>${release.pom.path}pom.xml</pomFileName>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
值得注意的是,在上面的配置中,我可以看到tagNameFormat
本身填充了标准的POM版本属性和我自己的自定义属性(顺便提一下,它是在命令行中运行时定义的)。但是,当我尝试访问该值以定义另一个配置元素completionGoals
时,completionGoals
显示为可变占位符,例如“$ {tagNameFormat}”字面上出现在结果命令中。 (通过使用-X
和-e
标志运行Maven进行验证。)
问题:
tagNameFormat
配置元素?我怎么能用Release插件做到这一点? 答案 0 :(得分:0)
我知道的唯一方法是定义另一个POM property:
<property>
<my.pom.property>...</my.pom.property>
<my.pom.property.extra>...</my.pom.property.extra>
...
<myTagNameFormat>${my.pom.property}@{project.version}-${my.pom.property.extra}</myTagNameFormat>
</property>
并相应地使用它:
<tagNameFormat>${myTagNameFormat}</tagNameFormat>
...
<completionGoals>clean verify help:evaluate -Dexpression=${myTagNameFormat}</completionGoals>
关于3.:AFAIK,变量定界符${...}
和@...@
是等效的,我从没读过或听过相反的话。但是,老实说,我从未使用过@...@
,因为我习惯从Bash来${...}
,而且这也是Filter文档页面上唯一提到的一个。 (@...@
仅在Escape filtering中被提及,因此我什至不知道它甚至存在了很长时间。)