0

Maven cargo plugin をセットアップしようとしています。次の要件があります。

  • トムキャット6
  • カスタム server.xml
  • カスタム context.xml
  • tomcat libにデプロイされたlog4j jar
  • マシンに Tomcat がインストールされていない場合はインストールします
  • maven のインストール ライフサイクル フェーズに関連付けて、war を展開し、コンテナーを再起動します。
  • 展開された戦争を ROOT.war にする

私は次に従いました: http://www.java-tutorial.ch/maven/maven-tomcat-deployment-using-cargo。これは私が望む完全な機能セットではなく、完全には機能しません。これは私が得るものです:

Can't load log handler "4host-manager.org.apache.juli.FileHandler"
[INFO] [talledLocalContainer] java.lang.ClassNotFoundException: 4host-manager.org.apache.juli.FileHandler

そして、 mvn install が戻ってきたら、 ps -ef を実行しますが、Tomcat プロセスはありません。

また、war を ROOT.war にコピーしますが、古い ROOT/ ディレクトリは置き換えられないため、新しい ROOT.war は実際にはデプロイされません。

「まだそこにない場合はTomcatをインストールする」という要件については、これは完全に簡単なように思えますが、

 <zipUrlInstaller>
     <url>http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.32/bin/apache-tomcat-6.0.32.zip</url>
     <extractDir>/usr/local</extractDir>
  </zipUrlInstaller>

mvn cargo:install を実行すると、以下がスローされます:

org.codehaus.cargo.container.ContainerException: Failed to get container installation home as the container has not yet been installed. Please call install() first.

これは不可解です。最初にインストールを呼び出す必要がありますが、私はインストールを呼び出しています。

アイデア?

4

1 に答える 1

2

あなたがたどったリンクは、貨物1.0.6のデモを提供しています。利用可能な最近のバージョンは 1.1.1 であるため、最近のものを使用することをお勧めします。子タグには特定の変更があります。

投稿http://cargo.codehaus.org/Deploying+to+a+running+containerで説明されているように。ZipUrlInstaller の子タグにいくつかの変更があります。

 <!--
        Careful: As described in the ZipUrlInstaller documentation,
        Cargo versions older than 1.1.0 accept only installDir, you therefore
        need to set installDir instead of downloadDir and extractDir.
        -->

投稿http://cargo.codehaus.org/Maven2+Archetypesに従って、maven archetype を使用して cargo sample プロジェクトを作成してみてください。「Single Webapp Module Archetype」を使用することをお勧めします

Maven プロジェクトをセットアップしたら、mvn cargo:install -P tomcat6x コマンドを実行して tomcat 6 をインストールできます。

「単一の webapp モジュール アーキタイプ」の pom.xml スニペットが役立ちます。

<profiles>
    <profile>
        <id>tomcat6x</id>
        <build>
            <pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.cargo</groupId>
                        <artifactId>cargo-maven2-plugin</artifactId>
                        <configuration>
                        <wait>true</wait>
                            <container>
                                <containerId>tomcat6x</containerId>

                                <!-- download zip url -->
                                <zipUrlInstaller>
                                    <url>http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.32/bin/apache-tomcat-6.0.32.zip</url>
                                    <downloadDir>${project.build.directory}/downloads</downloadDir>
                                    <extractDir>${project.build.directory}/extracts</extractDir>
                                </zipUrlInstaller>
                            </container>
                        </configuration>
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>
    </profile>
</profiles>

where wait パラメータ true は、サーバーが実行されているかどうかを確認するオプションを提供します。

于 2011-06-28T04:14:08.680 に答える