2011-05-24 117 views
3

我有一個Warbler正確生成的WAR文件,當我手工完成時,它正在工作。用tomcat-maven-plugin部署預置WAR

我試圖使用Maven(通過哈德森),以

1)調用顫聲(成功)

<phase>package</phase> 
<configuration> 
    <executable>/bin/bash</executable> 
    <workingDirectory>.</workingDirectory> 
    <arguments> 
     <argument>-c</argument> 
     <argument> 
      echo "Sourcing bashrc" 
      source ~/.bashrc 
      rvm use jruby 
      echo "Path is $PATH" 
      echo "Gem path is $GEM_PATH" 
      warble --trace 
      rm -R target/* 
      mv workspace.war target/yams.war 
     </argument> 
    </arguments> 
</configuration> 

2)部署到Tomcat

這是第二部分,我」有麻煩的。我只想告訴maven將我剛剛生成的WAR文件(並按照預期有效地移動到target /),並部署它。

問題是,如果我沒有指定整個項目的包裝,它只是跳過任何部署(「跳過非WAR」)。如果我指定了WAR包裝,它會嘗試製作一個無用的WAR本身,這會很好,但它會不斷要求更多的信息(webxml等)來製作這個無用的WAR,我最終會刪除並忽略它。

基本上,有沒有一種簡單的方式來說「我剛剛在工作區/目標/創建的戰爭中,並且像部署任何WAR一樣部署它」來實現maven?

回答

8

有史以來的第一篇文章:)

是的,這是可能的。訣竅是禁用maven-war-plugin的執行,這樣它就不會嘗試打包任何東西。然後,您可以簡單地將tomcat指向您已經組裝好的預構建戰爭。這裏是我的POM其部署預生成lambda Probe WAR文件:

<project> 
    <modelVersion>4.0.0</modelVersion> 

    <artifactId>Probe</artifactId> 
    <packaging>war</packaging> 

    <name>Probe</name> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>2.1.1</version> 
       <executions> 
        <execution> 
         <id>default-war</id> 
         <phase>none</phase> 
        </execution> 
       </executions>      
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>tomcat-maven-plugin</artifactId> 
       <configuration> 
        <warFile>Probe.war</warFile> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

感謝waffel's Weblog爲我提供了通用的解決方案,導致我搞清楚如何禁用Maven的戰爭插件的執行。 :)

*編輯:您可能還需要禁用Maven的安裝,插件讓行家從抱怨,當你調用經常使用的「MVN全新安裝」(消息看起來像這樣:)

[錯誤]無法執行目標 項目中的org.apache.maven.plugins:maven-install-plugin:2.3.1:安裝 (默認安裝):此 項目的包裝未將文件分配給構建神器

將此部分添加到您的POM中:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-install-plugin</artifactId> 
      <version>2.3.1</version> 
      <executions> 
       <execution> 
        <id>default-install</id> 
        <phase>none</phase> 
       </execution> 
      </executions> 
     </plugin> 

如果您希望您的項目實際上將war文件安裝到您的存儲庫中,我想您會被卡住使用maven-install-plugin的install:install-file目標。