4

ビルド サーバーで 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>
4

2 に答える 2

5

貨物に問題がありました。しばらくすると、Tomcat がスタックして再起動しなくなります。Cargo は tomcat の開始/停止を許可しません。

そのため、最終的に行ったことは、貨物を放棄し、スクリプトを使用してジェンキンス マシンから離れた場所で tomcat を再起動することでした。また、戦争を展開するために使用される統合マシン上のフォルダーも共有します。また、conf ファイルとフォルダーに maven アセンブリ プラグインを使用します。

于 2012-03-16T14:50:00.583 に答える
0

build.xml ファイル内で cleanTomcat ant タスクを呼び出し、次のフローに従ってください。

#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 の 1 つですが、追加の構成があります) を使用して、Java プロジェクトの外部のディレクトリをクリーンアップすることもできます。つまり、Tomcat コンテナー内で削除する必要があるものを削除できます。

于 2012-08-26T10:45:37.540 に答える