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

时间:2013-06-11 13:28:01

标签: java maven glassfish cargo

我正在尝试使用货物通过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片段:

<build>
        <finalName>myapp-${project.version}</finalName>
        <plugins>
            <plugin>
                <groupId>org.codehaus.cargo</groupId>
                <artifactId>cargo-maven2-plugin</artifactId>
                <version>1.4.2</version>
                <configuration>
                    <container>
                        <containerId>glassfish3x</containerId>
                        <type>remote</type>
                    </container>
                    <configuration>
                        <type>runtime</type>
                        <properties>
                            <cargo.remote.username>${cargo.remote.username}</cargo.remote.username>
                            <cargo.remote.password>${cargo.remote.password}</cargo.remote.password>
                            <cargo.glassfish.admin.port>${cargo.glassfish.admin.port}</cargo.glassfish.admin.port>
                            <cargo.hostname>${cargo.hostname}</cargo.hostname>
                        </properties>
                    </configuration>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.glassfish.deployment</groupId>
                        <artifactId>deployment-client</artifactId>
                        <version>3.1.1</version>

                    </dependency>
                </dependencies>
            </plugin>

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

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

          ...
          <configuration>
            <type>runtime</type>
            <properties>
              <cargo.runtime.args>force=true</cargo.runtime.args>
              <cargo.hostname>${hostname}</cargo.hostname>
              <cargo.remote.username>${username}</cargo.remote.username>
              <cargo.remote.password>${password}</cargo.remote.password>
            </properties>
          </configuration>
          ...

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

答案 1 :(得分:3)

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

blog post - deploy to remote glassfish using cargo plugin

答案 2 :(得分:1)

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

    <execution>
            <id>gf-deploy</id>
            <phase>package</phase>
            <goals>
                <goal>redeploy</goal>
            </goals>
        </execution>

然后我修改了asadmin.bat文件,并且在脚本调用appserver-cli.jar文件的行之后我添加了一些行,请注意重新部署调用undeploy和deploy命令以便maven glassfish插件的技巧这是在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

做完这个修改后,整个工作太棒了!

答案 3 :(得分:0)

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