【问题标题】:Replace task in Maven Antrun Plugin替换 Maven Antrun 插件中的任务
【发布时间】:2011-03-17 14:24:39
【问题描述】:

我在我的 maven 构建中使用 antrun 插件将某些 JSP 文件中的令牌 @version@ 替换为应用程序版本。 这就是我正在做的事情:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
        <execution>
            <phase>compile</phase>
            <configuration>
                 <target>
                      <echo>${displayVersion}</echo>
                      <replace file="src/main/webapp/admin/decorators/default.jsp" token="@version@" value="${displayVersion}"/>
                 </target>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

我将 displayVersion 作为参数传递给 maven

mvn clean install -DdisplayVersion="Version-1.1"

这是 Antrun 插件

的控制台输出
[INFO] [antrun:run {execution: default}]
[INFO] [antrun:run {execution: default}]  
[INFO] Executing tasks  
main:  
[echo] 9.4_70  
[INFO] Executed tasks

虽然该属性被正确回显,但它并没有在我的 JSP 中被替换。 @version@ 标记被替换为 {displayVersion} 而不是它的实际值。

【问题讨论】:

  • 在您发布的 antrun 配置中,您实际上使用的是 value="${display}" 而不是 value="${displayVersion}",这是原始代码中的拼写错误还是剪切粘贴问题?
  • 这是一个错字……我的错。我已经编辑了问题以纠正相同的问题

标签: maven maven-antrun-plugin


【解决方案1】:

按照 Aaron 的建议和 Maven 资源插件中的 set the delimiters 使用 Maven 资源过滤:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.5</version>
    <configuration>
      <delimiters>
        <!-- enable maven's standard delimiters -->
        <delimiter>${*}</delimiter>
        <!-- enable your @delimiters@ -->
        <delimiter>@</delimiter>
      </delimiters>
    </configuration>
</plugin>

【讨论】:

    【解决方案2】:

    Maven resources plugin可以替换资源中的变量;因此,如果您交付 JSP(而不是使用 jspc 插件编译它),您可以简单地让资源插件完成工作,同时通过 enabling filtering 复制资源。

    【讨论】:

    • Aaron,我知道 Maven 资源过滤。但是我正在从 AMT 迁移到 MAVEN,我使用的令牌是 @ -- @version@,我相信对于 Maven 资源过滤,我需要将其更改为 ${version} 现在,我需要在很多文件中替换此令牌,而我无法将其替换为 ${version}。有什么方法可以使用 Maven 资源过滤 过滤 @version@
    • 试试肖恩的解决方案。您使用的是哪个 IDE?在 Eclipse 中,您可以对所有文件进行全局搜索和替换。
    猜你喜欢
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 2022-02-03
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    相关资源
    最近更新 更多