2011-03-17 73 views
3

我在我的maven版本中使用antrun插件来替换某些具有应用程序版本的JSP文件中的令牌@ version @。 这是我在做什么:替换Maven Antrun插件中的任务

<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="@[email protected]" 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}而不是它的实际值。

+0

在你发布你实际使用'值antrun配置=“$ {显示}”',而不是'值=” $ {displayVersion}“',是原始代码中的拼写错误还是cut'n'paste问题? – skuro 2011-03-17 14:28:05

+0

它是一个错字...我的坏。我已经编辑了这个问题来纠正相同的问题 – Arpit 2011-03-17 14:30:28

回答

6

使用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 @[email protected] --> 
     <delimiter>@</delimiter> 
     </delimiters> 
    </configuration> 
</plugin> 
+0

非常感谢肖恩! – Arpit 2011-03-18 07:24:00

1

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

+1

Aaron,我知道Maven资源过滤。但我正在从AMT迁移到MAVEN,我使用的标记是@ - ** @ version @ **,我相信Maven资源过滤需要将其更改为** $ {version} **现在,有一个我需要替换这个令牌的很多文件,我不能去做** $ {version} **。有什么办法可以通过Maven资源过滤来过滤** @版本@ ** – Arpit 2011-03-17 15:09:21

+0

试试Sean的解决方案。你在使用哪个IDE?在Eclipse中,您可以对全部文件执行全局搜索。 – 2011-03-17 16:42:49