2011-06-22 68 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会给你选项来检查服务器是否在运行。