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

问题描述 投票:0回答:1

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版本属性和我自己的自定义属性(顺便说一下,它是在命令行中运行时定义的)。但是,当我尝试访问该值以定义另一个配置元素时,completionGoalscompletionGoals显示为可变占位符,例如“$ {tagNameFormat}”字面上出现在结果命令中。 (通过使用-X-e标志运行Maven验证。)

问题(S):

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

Re 3。:AFAIK,变量分隔符${...}@...@是等价的,我从来没有读过或听过相反的意思。但是,说实话,我从来没有使用过@...@,因为我已经习惯了来自Bash的${...},而且这也是Filter doc页面上提到的唯一一个。 (@...@仅在Escape filtering提及,我不知道它甚至存在很长时间。)

© www.soinside.com 2019 - 2024. All rights reserved.