在Maven中是否有可能从另一个配置值访问配置值?例如,在发行插件中,可以在tagNameFormat
元素配置期间访问project.version
密钥。我想做的是然后在名为completionGoals
的另一个元素中使用tagNameFormat
值。请参阅下面:
<!-- 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进行验证。(
问题:
- 是否可以从POM中的Maven插件配置中获取填充的插件配置值?
- 我是正确地指正确的
tagNameFormat
配置元素吗?我该如何使用Release插件执行此操作? - '@'与'$'是什么意思?(猜测:动态评估与静态评估?(
我知道的唯一方法是定义另一个POM属性:
<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的${...}
,这也是"过滤器DOC"页面上唯一提到的一个。(@...@
仅在Escape Feltering中提到,因此我不知道它甚至很长一段时间都存在。(