与tomcat6的maven货物插件

时间:2011-06-22 22:20:22

标签: maven maven-cargo

我正在尝试设置maven货运插件。我有以下要求:

  • tomcat 6
  • custom 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 install返回时,我执行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 cargo:install,它抛出这个:

org.codehaus.cargo.container.ContainerException: Failed to get container installation home as the container has not yet been installed. Please call install() first.

这令人费解。它希望我先调用安装,但我呼叫安装。

想法?

1 个答案:

答案 0 :(得分:2)

您跟随的链接已经为货物1.0.6提供了演示。最近的版本是1.1.1所以我建议你使用最近版本,并且子标签有一些变化

如帖子http://cargo.codehaus.org/Deploying+to+a+running+container中所述。 ZipUrlInstaller的子标签中存在ceratin更改。

 <!--
        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 Webapp Module Archetype”

设置maven项目后,可以安装tomcat 6运行mvn cargo:install -P tomcat6x命令。

“单一webapp模块原型”的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将为您提供检查服务器是否正在运行的选项。