用货物重新部署远程玻璃鱼失败

我目前正在尝试使用货物通过atlassian的竹子在远程glassfish 3.1.2上部署应用程序。 这是一个开发环境,因此每次都会在同一个上下文根目录中部署具有不同版本号的相同应用程序。

但每次我都以maven的目标执行这项工作:

org.codehaus.cargo:cargo-maven2-plugin:redeploy 

我一直收到错误:

 11-Jun-2013 15:13:48 Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-cli of goal org.codehaus.cargo:cargo-maven2-plugin:1.4.2:redeploy failed: Deployment has failed: Action failed Deploying application to target server failed; Error occurred during deployment: Application with name myapp-1.4.8 is already registered. Either specify that redeployment must be forced, or redeploy the application. Or if this is a new deployment, pick a different name. Please see server.log for more details. 11-Jun-2013 15:13:48 11-Jun-2013 15:13:48 at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:110) 11-Jun-2013 15:13:48 at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 11-Jun-2013 15:13:48 ... 19 more 11-Jun-2013 15:13:48 Caused by: org.codehaus.cargo.util.CargoException: Deployment has failed: Action failed Deploying application to target server failed; Error occurred during deployment: Application with name myapp-1.4.8 is already registered. Either specify that redeployment must be forced, or redeploy the application. Or if this is a new deployment, pick a different name. Please see server.log for more details. 11-Jun-2013 15:13:48 11-Jun-2013 15:13:48 at org.codehaus.cargo.container.spi.deployer.AbstractJsr88Deployer.waitForProgressObject(AbstractJsr88Deployer.java:285) 11-Jun-2013 15:13:48 at org.codehaus.cargo.container.spi.deployer.AbstractJsr88Deployer.deploy(AbstractJsr88Deployer.java:123) 11-Jun-2013 15:13:48 at org.codehaus.cargo.container.spi.deployer.AbstractJsr88Deployer.redeploy(AbstractJsr88Deployer.java:207) 11-Jun-2013 15:13:48 at org.codehaus.cargo.maven2.DeployerRedeployMojo.performDeployerActionOnSingleDeployable(DeployerRedeployMojo.java:50) 11-Jun-2013 15:13:48 at org.codehaus.cargo.maven2.AbstractDeployerMojo.performDeployerActionOnAllDeployables(AbstractDeployerMojo.java:180) 11-Jun-2013 15:13:48 at org.codehaus.cargo.maven2.AbstractDeployerMojo.doExecute(AbstractDeployerMojo.java:97) 11-Jun-2013 15:13:48 at org.codehaus.cargo.maven2.AbstractCargoMojo.execute(AbstractCargoMojo.java:432) 11-Jun-2013 15:13:48 at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 11-Jun-2013 15:13:48 ... 20 more 11-Jun-2013 15:13:48 [ERROR] 11-Jun-2013 15:13:48 [ERROR] 11-Jun-2013 15:13:48 [ERROR] For more information about the errors and possible solutions, please read the following articles: 11-Jun-2013 15:13:48 [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException 11-Jun-2013 15:13:48 [ERROR] 11-Jun-2013 15:13:48 [ERROR] After correcting the problems, you can resume the build with the command 

我需要的是货物插件强制重新部署,而不管该上下文根已经存在应用程序(旧版本)。

如果我手动运行asadmin命令,我可以轻松添加–force参数,它可以工作。

我有一个额外的约束,我无法在托管Bamboo实例的服务器上安装本地版本的glassfish所以我不能使用像maven sh插件这样的东西来手动构建asadmin命令。

下面是相关的pom.xml片段:

  myapp-${project.version}   org.codehaus.cargo cargo-maven2-plugin 1.4.2   glassfish3x remote   runtime  ${cargo.remote.username} ${cargo.remote.password} ${cargo.glassfish.admin.port} ${cargo.hostname}      org.glassfish.deployment deployment-client 3.1.1    

有任何想法吗?

有同样的问题。 使用Marlon的建议通过添加运行时args解决了它,如下所示:

  ...  runtime  force=true ${hostname} ${username} ${password}   ... 

显然货物是部署,而不是重新部署。

我终于通过稍微修改我部署和版本化应用程序以及使用glassfish的应用程序版本控制系统的方式来了解如何实现这一目标。 以下是我写的一篇小博客文章的链接,以展示如何完成此任务:

博客文章 – 使用货物插件部署到远程glassfish

其他适用于我的方法是使用maven-glassfish-plugin ,我正确配置了插件,我将pom作为重新部署执行

   gf-deploy package  redeploy   

然后我修改了asadmin.bat文件,并且,在脚本调用appserver-cli.jar文件的行之后,我添加了一些行,请注意重新部署调用undeploy和deploy命令,这样maven glassfish插件的技巧就是print当undeploy命令运行时(Tihs会混淆maven插件,好像undeploy命令总是成功),但是,当asadmin命令部署时,流将正常运行。

 :run if NOT %1 == undeploy goto :end %JAVA% -jar "%~dp0..\lib\client\appserver-cli.jar" %* ECHO "TEST" :end if %1 == undeploy goto :end1 %JAVA% -jar "%~dp0..\lib\client\appserver-cli.jar" %* :end1 

在做了这个修改后,replalalala就是这么好!

您可能需要在管理域中设置新的glassfish服务器管理员用户。 查看以下http://beforeuquit.blogspot.com/