java - 使用 Cargo 和 Maven 远程部署 WAR,无需 HOT 部署

标签 java tomcat maven cargo

我们在构建服务器上使用 Cargo 和 Maven 将 WAR 文件从我们的构建服务器远程部署到内部 QA 服务器以进行测试。

我们当前的项目 POM 如下所示,并且可以正常进行热部署。

问题是不是热部署,我们希望 Cargo 插件停止 Tomcat 实例,部署新的 WAR,然后启动 Tomcat。有没有办法改变 POM 来管理这种情况?

我们的 Maven 构建定义为:

mvn clean deploy ... cargo:redeploy

以及 POM 中的 cargo 插件设置:

                  <plugin>
                        <groupId>org.codehaus.cargo</groupId>
                        <artifactId>cargo-maven2-plugin</artifactId>
                        <configuration>
                            <container>
                                <containerId>tomcat7x</containerId>
                                <type>remote</type>
                                <systemProperties>
                                    <cargo.jvmargs>-XX:MaxPermSize=256M -Xmx1024m</cargo.jvmargs>
                                </systemProperties>
                            </container>
                            <configuration>
                                <type>runtime</type>
                                <properties>
                                    <cargo.hostname>qa-server</cargo.hostname>
                                    <cargo.servlet.port>8080</cargo.servlet.port>
                                    <cargo.tomcat.manager.url>http://qa-server:8080/manager</cargo.tomcat.manager.url>
                                    <cargo.remote.username>username</cargo.remote.username>
                                    <cargo.remote.password>pass</cargo.remote.password>
                                </properties>
                            </configuration>
                            <deployer>
                                <type>remote</type>
                                <deployables>
                                    <deployable>
                                        <groupId>com.ourcompany</groupId>
                                        <artifactId>myapp-artifactId</artifactId>
                                        <type>war</type>
                                        <properties>
                                            <context>latest</context>
                                        </properties>
                                    </deployable>
                                </deployables>
                            </deployer>
                        </configuration>
                    </plugin>

最佳答案

我们在 Cargo 方面遇到了困难。过了一会儿,tomcat卡住了,不会重启。 Cargo 不允许启动/停止 tomcat。

所以我们最终做的是放弃 cargo 并使用脚本在距我们的 jenkins 机器一定距离处重启 tomcat。我们还在用于部署我们的 war 的集成机器上共享一个文件夹。我们还为我们的 conf 文件和文件夹使用 maven 程序集插件。

关于java - 使用 Cargo 和 Maven 远程部署 WAR,无需 HOT 部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9739204/

相关文章:

java - 为什么通用列表的声明有所不同?

linux 中的 java ${user.home} 变量

tomcat - Tomcat 上的 WebSocket 握手返回意外响应代码 500

java - 无法从 WSDL 创建客户端

java - 如何让 lambda 表达式在 Java 8 中定义 toString?

java - 如何在 CMD 中打开程序并使用 Java 与其交互

java - 更改 JTree 中的节点名称

java - tomcat把web应用使用的txt文件存放在哪里

java - 在eclipse的tomcat中更改Maven项目名称

maven - Gradle中的Maven配置