Использование Cargo с Maven для удаленного развертывания WAR без развертывания HOT - PullRequest
4 голосов
/ 16 марта 2012

Мы используем Cargo с Maven на сервере сборки для удаленного развертывания файла WAR с нашего сервера сборки на внутренний сервер QA для тестирования.

Наше текущее POM для проекта показано ниже и работает правильно для горячего развертывания.

Проблема в том, что вместо горячего развертывания , мы бы хотели, чтобы плагин Cargo остановил экземпляр Tomcat, развернул новую WAR и затем запустил Tomcat. Есть ли способ изменить POM для управления этим сценарием?

Наша сборка Maven определяется как:

mvn clean deploy ... cargo:redeploy

И настройки грузового плагина в POM:

                  <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>

Ответы [ 2 ]

4 голосов
/ 16 марта 2012

У нас были трудности с грузом. Через некоторое время tomcat застревает и не перезагружается. Cargo не позволяет запускать / останавливать кота.

Итак, в конечном итоге мы бросили груз и использовали скрипт для перезапуска tomcat на расстоянии от нашей машины Дженкинса. Также мы разделяем папку на машине интеграции, используемой для развертывания наших войн. Мы также используем подключаемый модуль maven для наших файлов и папок.

0 голосов
/ 26 августа 2012

Что делать с вызовом муравьиной задачи cleanTomcat внутри файла build.xml и выполнить следующий поток:

#1. stop, clean container, start
mvn cargo:stop 
    antrun:run <<<<<<< build.xml file to clean +war +warUnpacked +context.xml
    cargo:start

#2. deploy your webapp
mvn cargo:deploy

О предыдущем ответе unludo , общий доступ к папкемежду серверами - хороший способ повысить скорость развертывания.

Вы также можете использовать maven-clean-plugin (да, mvn clean, но с дополнительной конфигурацией), чтобы очиститькаталоги вне вашего Java-проекта, т.е. чтобы удалить то, что вам нужно удалить внутри вашего контейнера Tomcat.

...