2012-05-11 59 views
4

我爲我的項目的init配置文件使用maven-antrun-plugin。但是我需要初始化配置文件一次,當我第一次啓動我的開發環境時,並不是每次啓動碼頭時:運行。如何在沒有附加執行的情況下調用maven-antrun-plugin目標到maven階段?

例如,如果我將階段附加到進程資源,例如每次啓動jetty時,我的配置文件都會重置。

所以我配置antrun這樣的:

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
     <execution> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     <configuration> 
      <target name="init_config_files"> 
       <!-- init files --> 
      </target> 
     </configuration> 
     </execution> 
    </executions> 
</plugin> 

如果我啓動MVN antrun:運行,它只是回我這個錯誤: 「[信息]中沒有定義的Ant目標 - SKIPPED」。如果我指定target,它是同樣的事情:「mvn antrun:run -Dtarget = init_config_files」。

回答

5

試試這個:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.7</version> 
      <executions> 
       <execution> 
        <id>default-cli</id> 
        <configuration> 
         <target> 
          <property name="compile_classpath" refid="maven.compile.classpath" /> 
          <echo message="compile classpath: ${compile_classpath}" /> 
         </target> 
        </configuration> 
        <goals> 
         <goal>run</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

並運行此:

mvn antrun:run 
1

如果您需要在特殊條件下(例如一次)運行某部分構建,可以將這些部分放入Maven profile,然後調用Maven指定配置文件名稱,例如mvn -p init_config_files package

+0

我已經使用這個解決方案的另一個插件,我只是在我的想法被封鎖:「爲什麼安捷倫絕對要附加到一個階段?」:) Thx – Antoine

3

我只是碰到了同樣的問題,終於想通了:如果你想運行Ant任務只有一次,你可以像這樣設置插件:

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <configuration> 
     <target name="init_config_files"> 
      <!-- init files --> 
     </target> 
    </configuration> 
</plugin> 

and use mvn antrun:run執行它。這樣,螞蟻的東西就不會被綁定到任何階段。

3

最好的解決方案,到目前爲止,我發現:

 <plugin> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.7</version> 
      <executions> 
       <execution> 
        <id>go-live</id> 
        <configuration> 
         <target> 
          <!-- go live! --> 
          <exec executable="${basedir}/deploy2server.sh" failonerror="true" dir="${basedir}"> 
           <arg value="deploy" /> 
           <arg value="${deploy.to.server}" /> 
           <arg value="${jetty.port.live}" /> 
          </exec> 
         </target> 
        </configuration> 
        <goals> 
         <goal>run</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

並運行此:

mvn antrun:[email protected] 

該解決方案避免了目標被意外運行,即。它不會僅僅通過鍵入「mvn antrun:run」來運行,並且它在常規的Maven運行期間也不運行。我在jenkins實例中使用這種方式進行qa自動部署,之後所有包含與最終分發包集成的模塊都已成功執行。

+0

非常好的解決方案。用這種方法你可以執行幾次執行,你可以選擇其中的一個。 – maba

相關問題