我正在尝试设置maven货运插件。我有以下要求:
我遵循了以下内容: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.
这令人费解。它希望我先调用安装,但我呼叫安装。
想法?
答案 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将为您提供检查服务器是否正在运行的选项。