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验证。)
问题(S):
tagNameFormat
配置元素?我怎么能用Release插件做到这一点?我所知道的唯一方法是定义另一个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>
Re 3。:AFAIK,变量分隔符${...}
和@...@
是等价的,我从来没有读过或听过相反的意思。但是,说实话,我从来没有使用过@...@
,因为我已经习惯了来自Bash的${...}
,而且这也是Filter doc页面上提到的唯一一个。 (@...@
仅在Escape filtering提及,我不知道它甚至存在很长时间。)