Java Jenkins fresh deploy使用容器部署插件工作,但在重新部署时失败

Java Jenkins fresh deploy使用容器部署插件工作,但在重新部署时失败,java,maven,jenkins,tomcat7,Java,Maven,Jenkins,Tomcat7,我想设置我的maven构建的web应用程序,作为我日常工作的一部分进行构建和部署 构建工作正常,但是使用容器部署插件似乎不可靠,因为新的部署工作正常,但重新部署应用程序失败。应用程序已部署时,插件无法部署(war已在webapps目录中)。要明确的是,如果我删除了战争的并取消了所有部署,然后进行jenkins构建,它会按预期工作,但随后失败。错误消息是: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FA

我想设置我的maven构建的web应用程序,作为我日常工作的一部分进行构建和部署

构建工作正常,但是使用容器部署插件似乎不可靠,因为新的部署工作正常,但重新部署应用程序失败。应用程序已部署时,插件无法部署(war已在webapps目录中)。要明确的是,如果我删除了战争的并取消了所有部署,然后进行jenkins构建,它会按预期工作,但随后失败。错误消息是:

org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FAIL - Encountered exception javax.management.RuntimeErrorException: Error invoking method check
我是否应该使用deploy:deploy作为maven构建本身的一部分进行部署,并添加一个分发管理部分

还是我错过了他们的詹金斯设置?

我正在这样做

如果我想在pom中存储部署细节,我可以调用cargo:redeploy作为构建后步骤


或者我调用cargo:undeploy作为构建后步骤,然后使用containerdeployplugin使用我在jenkins中的设置进行实际部署

首先,maven deploy插件不会将web应用程序部署到容器中。它将项目工件部署到maven存储库中。因此,它不能用于您的目的


其次,请参阅相关的
open
jira问题。这还建议了一种解决方案/解决方法。

在部署war文件之前,您可以使用此方法取消部署现有包。
我认为您可以在部署之前将此任务添加到同一作业中。因此,您仍然可以按预期使用CI

也有同样的问题。令人惊讶的是,在我的情况下,完全其他的事情起了作用


在重新部署时查看tomcat日志,发现
OutOfMemory:Permgen space
。在
$CATALINA_HOME/bin/setenv.sh中将
XX:PermSize
XX:MaxPermSize
增加到256m,完全解决了这个问题。

如果您尝试在context.xml中部署两个具有相同上下文根的应用程序(但在部署时在jenkins中定义了另一个),也可能发生这种情况


必须手动清理/webapps并重新启动服务器。现在又能工作了。

cargo:redeploy工作得很好—将war文件重新部署到远程tomcat7。“我已经发布了对我有效的解决方案作为答案。”尼姆斯基说。当然,上面的链接暗示了完全相同的情况。我觉得澄清maven部署也很重要。