2011-06-22 71 views
0

我想設置maven貨物插件。我有以下要求:maven貨物插件與tomcat6

  • 的Tomcat 6
  • 定製的server.xml
  • 定製的context.xml
  • log4j的JAR部署到Tomcat的lib
  • 在機器上安裝Tomcat,如果它已經不存在
  • 配合maven的安裝生命週期階段部署戰爭並重啓容器
  • 使部署的戰爭成爲ROOT.war

我遵循以下幾點:http://www.java-tutorial.ch/maven/maven-tomcat-deployment-using-cargo。這不是我想要的完整功能集,甚至完全不起作用。這是我得到:

Can't load log handler "4host-manager.org.apache.juli.FileHandler" 
[INFO] [talledLocalContainer] java.lang.ClassNotFoundException: 4host-manager.org.apache.juli.FileHandler 

然後當mvn安裝返回我做ps -ef,並且沒有tomcat進程。

此外,它將戰爭複製到ROOT.war,但舊的ROOT /目錄未被替換,因此新的ROOT.war實際上並未部署。

對於「安裝Tomcat如果不是已經有」的要求,好像這應該是絕對簡單的,但是當我提供

<zipUrlInstaller> 
    <url>http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.32/bin/apache-tomcat-6.0.32.zip</url> 
    <extractDir>/usr/local</extractDir> 
    </zipUrlInstaller> 

和運行mvn貨物:安裝,它會拋出這樣的:

​​

這是令人費解的。它希望我先打電話安裝,但我打電話安裝。

想法?

回答

2

您跟隨的鏈接已給出貨物1.0.6的演示。可用的最新版本是1.1.1,所以我建議您最近使用,並且子標籤存在某些更改

如後http://cargo.codehaus.org/Deploying+to+a+running+container中所述。 ZipUrlInstaller的子標籤中有角蛋白更改。

<!-- 
     Careful: As described in the ZipUrlInstaller documentation, 
     Cargo versions older than 1.1.0 accept only installDir, you therefore 
     need to set installDir instead of downloadDir and extractDir. 
     --> 

嘗試使用maven原型在郵政http://cargo.codehaus.org/Maven2+Archetypes後創建貨物樣本項目。我建議你給用戶「Single Web App Module Archetype」

設置好maven項目後,你可以安裝tomcat 6運行mvn cargo:install -P tomcat6x命令。

「single webapp module archetype」的pom.xml片段,它對您很有用。

<profiles> 
    <profile> 
     <id>tomcat6x</id> 
     <build> 
      <pluginManagement> 
       <plugins> 
        <plugin> 
         <groupId>org.codehaus.cargo</groupId> 
         <artifactId>cargo-maven2-plugin</artifactId> 
         <configuration> 
         <wait>true</wait> 
          <container> 
           <containerId>tomcat6x</containerId> 

           <!-- download zip url --> 
           <zipUrlInstaller> 
            <url>http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.32/bin/apache-tomcat-6.0.32.zip</url> 
            <downloadDir>${project.build.directory}/downloads</downloadDir> 
            <extractDir>${project.build.directory}/extracts</extractDir> 
           </zipUrlInstaller> 
          </container> 
         </configuration> 
        </plugin> 
       </plugins> 
      </pluginManagement> 
     </build> 
    </profile> 
</profiles> 

其中wait參數true會給你選項來檢查服務器是否在運行。