从Maven Release插件中的其他配置访问配置值

时间:2017-05-02 18:52:30

标签: maven maven-3 maven-release-plugin

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进行验证。)

问题:

  1. 是否可以从POM中的Maven插件配置中获取填充的插件配置值?
  2. 我是否正确引用了tagNameFormat配置元素?我怎么能用Release插件做到这一点?
  3. '@'与'$'的含义是什么? (猜猜:动态与静态评估?)

1 个答案:

答案 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中被提及,因此我什至不知道它甚至存在了很长时间。)