5

我在我的 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}而不是它的实际值。

4

2 回答 2

7

按照 Aaron 的建议使用 Maven 资源过滤并在 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>
于 2011-03-17T15:49:00.160 回答
1

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

于 2011-03-17T14:44:47.357 回答