1

JettyのMavenCargoプラグインにjetty-env.xmlファイルを指定する方法に記載されているソリューションを実装しようとしていますか?

しかし、私はさらに根本的な問題に直面しています。私の貨物は、コンテキストxmlを生成していません。

<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.2.1</version>
    <configuration>
        <!-- Container configuration -->
        <container>
            <containerId>jetty6x</containerId>
            <type>embedded</type>
        </container>
        <!-- Configuration to use with the container or the deployer -->
        <configuration>
            <properties>
                <cargo.servlet.port>${itest.webapp.port}</cargo.servlet.port>
                <cargo.jetty.createContextXml>true</cargo.jetty.createContextXml>
            </properties>
            <deployables>
                <deployable>
                    <groupId>${project.groupId}</groupId>
                    <artifactId>myApp-web</artifactId>
                    <type>war</type>
                    <properties>
                        <context>/myApp</context>
                    </properties>
                </deployable>
            </deployables>
<!--
            <configfiles>
                <configfile>
                    <file>${project.build.outputDirectory}/jetty-env.xml</file>
                    <todir>contexts</todir>
                    <tofile>${jetty6.context}.xml</tofile>
                </configfile>
            </configfiles>
-->
        </configuration>
    </configuration>
    <executions>
        <execution>
            <id>start-container</id>
            <phase>pre-integration-test</phase>
            <goals>
                <goal>start</goal>
            </goals>
        </execution>
        <execution>
            <id>stop-container</id>
            <phase>post-integration-test</phase>
            <goals>
                <goal>stop</goal>
            </goals>
        </execution>
    </executions>
</plugin>

基本的な考え方は、生成されたものを置き換えるためのカスタムcontext.xmlを提供することです。ただし、試してみると、Cargoによって生成されたコンテキストXMLが見つかりません(カスタム構成ファイルに注意し、cargo.jetty.createContextXmlがtrueであることに注意してください)。

設定の問題でコンテキストが生成されないのか、見落とした場所でコンテキストが生成されるのかわかりません。target / cargo /とtempディレクトリで、cargoがWARを拡張したことを確認しましたが、どちらの場所にもコンテキストxmlが含まれていません。

(私はMaven 2.2.1、Cargo 1.2.1、JDK 6を使用しています)

4

1 に答える 1

0

あなたの問題が何であるかは 100% わかりませんが、Jetty6 の私のシステムで cargo が行うことは次のとおりです。

ランタイム コンテキストと webapp ファイルがある場所ではなく、Jetty がインストールされているディレクトリ。私の場合、それらは Java 一時ディレクトリ (つまりjava.io.tmpdir) に保存されます。私のUbuntuシステムでは、これは/tmp. このディレクトリの下にディレクトリがありcargo/confます。/tmp/cargo/confI have a contexts directory where the context.xmlfile is stored. ファイルの実際の名前は決してありませんがcontext.xml、常に Web アプリのコンテキストにちなんで名付けられています。

私の場合、このファイルには、貨物を構成したコンテキストと同じ名前が付けられています。あなたが私と同じようにコンテキストを提供していないことに気付いたので、ここにあなたの問題があるかもしれません:

<deployables>
    <deployable>
       <properties>
         <!-- Web root context URL -->
         <context>${build.appserver.context}</context>
       </properties>
    </deployable>
</deployables>

次に、context.xml ファイルを適切な場所に配置するセクションがコメントアウトされていることにも気付きました。コメントを外さない限り、これは機能しません。

${jetty6.context}第三に、 Maven プロパティの値を設定しましたか?

第 4 に、これを機能させるには、Jetty のスタンドアロン構成を使用する必要があると思います。Cargo が自動的にダウンロードしてインストールするので、これは問題になりません。ここで私の設定を参照してください:

                      <container>
                          <containerId>jetty6x</containerId>
                          <!-- Using Jetty for build portability so type != "remote". For Jetty
                              would prefer type = "embedded" but we must go with "installed" because jetty-env.xml
                              file would be ignored. See http://jira.codehaus.org/browse/CARGO-861 -->
                          <type>installed</type>
                          <zipUrlInstaller>
                              <url>http://dist.codehaus.org/jetty/jetty-6.1.26/jetty-6.1.26RC0.zip</url>
                              <installDir>${build.working}</installDir>
                          </zipUrlInstaller>
                          <dependencies>
                              <!-- The following dependencies are added to the servlet container's
                                  classpath as if they were installed by a system admin. In order to be included
                                  here, they need to be listed as dependencies in this pom.xml. -->
                              <dependency>
                                  <groupId>com.h2database</groupId>
                                  <artifactId>h2</artifactId>
                              </dependency>
                              <dependency>
                                  <groupId>com.oracle</groupId>
                                  <artifactId>ojdbc5</artifactId>
                              </dependency>
                              <dependency>
                                  <groupId>mysql</groupId>
                                  <artifactId>mysql-connector-java</artifactId>
                              </dependency>
                              <dependency>
                                  <groupId>net.sourceforge.jtds</groupId>
                                  <artifactId>jtds</artifactId>
                              </dependency>
                          </dependencies>
                      </container>
                      <!-- Do not hang and wait for a client, just do it -->
                      <wait>false</wait>
                      <configuration> <!-- Deployer configuration -->
                          <!-- Running Jetty container with type=installed (e.g. local) so
                              type != "runtime", and we are installing it during this execution for the
                              sake of portability so type != "existing" -->
                          <type>standalone</type>
                          <properties>
                              <!-- Use the port number from settings.xml -->
                              <cargo.servlet.port>${build.appserver.port}</cargo.servlet.port>
                          </properties>
                          <deployables>
                              <deployable>
                                  <properties>
                                      <!-- Web root context URL -->
                                      <context>${build.appserver.context}</context>
                                  </properties>
                              </deployable>
                          </deployables>
                          <configfiles>
                              <configfile>
                                  <file>${basedir}/target/jetty-context.xml</file>
                                  <todir>contexts</todir>
                                  <tofile>${build.appserver.context}.xml</tofile>
                              </configfile>
                          </configfiles>
                      </configuration>
于 2012-04-17T03:00:07.733 に答える