从Maven Release插件中的另一种配置访问配置值



在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版本属性和我自己的自定义属性(偶然地在命令行中定义了(。但是,当我尝试访问该值以定义另一个配置元素时,completionGoalscompletionGoals似乎是可变占位符,例如" $ {tagnameformat}"字面意思出现在结果命令中。(通过使用-X-e标志运行Maven进行验证。(

问题:

  1. 是否可以从POM中的Maven插件配置中获取填充的插件配置值?
  2. 我是正确地指正确的tagNameFormat配置元素吗?我该如何使用Release插件执行此操作?
  3. '@'与'$'是什么意思?(猜测:动态评估与静态评估?(

我知道的唯一方法是定义另一个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中提到,因此我不知道它甚至很长一段时间都存在。(

最新更新