2013-02-05 58 views
0

我有一个Spring framework项目具有以下三个文件在src/main/webapp/WEB-INFMaven的配置文件:Maven的antrun,插件和Maven的战争插件的互动

project.propterties 
project-servlet.xml 
project-security.xml 

我想如下为“注入”使用maven profilesprod构建的情况下,上述文件:

 <profile> 
     <id>prod-build</id> 
     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-antrun-plugin</artifactId> 
        <version>1.7</version> 
        <executions> 
         <execution> 
          <phase>prepare-package</phase> 
          <goals> 
           <goal>run</goal> 
          </goals> 
          <configuration> 
           <target> 
            <delete 
             file="${project.build.directory}/${project.build.finalName}/WEB-INF/project.properties" /> 
            <copy file="src/main/config/prod/project.properties" 
             tofile="${project.build.directory}/${project.build.finalName}/WEB-INF/project.properties" /> 
           </target> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-war-plugin</artifactId> 
        <version>2.3</version> 
       </plugin> 
      </plugins> 
      <resources> 
       <resource> 
        <directory>src/main/resources/prod</directory> 
       </resource> 
      </resources> 
     </build> 
    </profile> 

的问题是由时间maven-antrun-plugin得到一个机会来运行,该war已经打包。蚂蚁<target>的确运行并做出了适当的修改,但为时已晚。

命令行:

$ mvn -Pprod-build clean install 

MVN输出:

[INFO] --- maven-antrun-plugin:1.7:run (default) @ FocusMVN --- 
[INFO] Executing tasks 

main: 
    [copy] Copying 1 file to J:\work\workspace\FocusMVN\target\myproject\WEB-INF 
[INFO] Executed tasks 
[INFO] 
[INFO] --- maven-war-plugin:2.3:war (default-war) @ FocusMVN --- 
[INFO] Packaging webapp 
[INFO] Assembling webapp [FocusMVN] in [J:\work\workspace\FocusMVN\target\myproject] 
[INFO] Processing war project 
[INFO] Copying webapp resources [J:\work\workspace\FocusMVN\src\main\webapp] 
[INFO] Webapp assembled in [3198 msecs] 
[INFO] Building war: J:\work\workspace\FocusMVN\target\myproject.war 
[INFO] 
[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ FocusMVN --- 
[INFO] Installing J:\work\workspace\FocusMVN\target\myproject.war to C:\Users\mansoork\.m2\repository\ca\utoronto\med\dc\FocusMVN\0.0.1-SNAPSHOT\FocusMVN-0.0.1-SNAPSHOT.war 
[INFO] Installing J:\work\workspace\FocusMVN\pom.xml to C:\Users\mansoork\.m2\repository\ca\utoronto\med\dc\FocusMVN\0.0.1-SNAPSHOT\FocusMVN-0.0.1-SNAPSHOT.pom 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 

任何指针将不胜感激。

+1

可以绑定'antrun'改为'prepare-package'阶段而不是'package'。 –

+0

@Andrew Logvinov谢谢;它似乎没有什么区别;我已经用mvn输出更新了我的问题,可以请看一下吗? – kmansoor

+0

你使用哪个maven版本? – khmarbaise

回答

0

你注意这条线

[INFO] Copying webapp resources [J:\work\workspace\FocusMVN\src\main\webapp] 

这是怎么回事?

maven-war-plugin复制src/main/webapp的内容(包含你的开发project.properties)战争。在做这件事的时候,它会替换刚刚被蚂蚁任务复制的那个。

你可以尝试什么是排除由Maven的战争插件复制的文件集的project.properties(因为它已经被你的Ant任务复制。)

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.3</version>  
    <configuration> 
     <warSourceExcludes>WEB-INF/project.propterties</warSourceExcludes> 
    </configuration> 
</plugin> 

reference

+0

您的意思是warSourceExcludes? – kmansoor

+0

@kmansoor对...刚刚更新了我的帖子 – ben75

1

使用制备封装代替的。

代替Maven的antrun-插件尝试使用复制Maven的插件

<plugin> 
      <groupId>com.github.goldin</groupId> 
      <artifactId>copy-maven-plugin</artifactId> 
      <version>0.2.5</version> 
      <executions> 
       <execution> 
        <id>create-archive</id> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>copy</goal> 
        </goals> 
        <configuration> 
         <resources> 
          <resource> 
          <targetPath>${basedir}/target/</targetPath> 
          <directory>${basedir}/src/main/webapp/WEB-INF</directory> 
          <includes> 
           <include>**/project*</include> 
          </includes> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
+0

+1:你击败了我! :)另外,请看这里描述的阶段列表:http://www.sonatype.com/books/mvnref-book/reference/lifecycle-sect-structure.html。 – carlspring

+0

@卡罗斯罗德里格斯感谢您的评论。我用mvn输出更新了我的问题,使用prepare-package也没有帮助。你可以看一下吗?谢谢。 – kmansoor