2013-02-05 56 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