1

Mavenプロジェクトに埋め込みコンテナーを設定しようとしているので、統合テストフェーズで実行したいと思います。突堤に関して2つの問題があり、解決できません。

  1. <daemon>true</daemon>期待される効果はありません。サーバーは実行されますが、ビルドプロセスがロックされます(実際には単体テストがブロックされます)。では、その構成をどこに配置するのでしょうか。
  2. それ<useTestClasspath>true</useTestClasspath>は私にとって謎です。src/main/webapp/WEB-INF/libpostgresql jar(データソース(postegresql-driver)のjettyによって呼び出される)を配置するためにを使用したくないのは、それがアプリケーションに埋め込まれ、戦争(クライアント)になりたくないからです。側)。だから使いたいのです<useTestClasspath>true</useTestClasspath>が、postgresqlをsrc/test/resources入れても見つからない/認識されません。では、そのプロパティをどのように使用するのでしょうか。

完全なプラグイン構成は次のとおりです。

<plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>6.1.9</version>
            <executions>
                <execution>
                    <id>start-jetty</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <goal>run-war</goal>
                    </goals>
                    <configuration>
                        <useTestClasspath>true</useTestClasspath>
                        <daemon>true</daemon>
                        <contextPath>agepro-prototype</contextPath>
                        <webApp>
                            ${project.build.directory}/agepro-prototype.war
                        </webApp>
                    </configuration>
                </execution>
                <execution>
                    <id>stop-jetty</id>
                    <phase>post-integration-test</phase>
                    <goals>
                        <goal>stop</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <connectors>
                    <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                        <port>9091</port> 
                    </connector>
                </connectors>
                <stopPort>9092</stopPort>
                <stopKey>test</stopKey>
            </configuration>
        </plugin>

あなたが私に提供することができる助けを前もって感謝します。私の英語はかなり悪いので、文法をお詫びしなければなりません。
よろしく、
デパド

4

2 に答える 2

1

最初の質問についてはわかりませんが、2番目の質問については、メインの依存ブロックで提供されたスコープとしてpostgresql jarを指定し(これにより、戦争にバンドルされるのを防ぎます)、jettyプラグイン定義に追加の依存ブロックを追加します(これにより、jetty 実行時に postgresql jar が使用可能になります。

<build>
<plugins>
    <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <version>6.1.9</version>
        <executions>
            <execution>
                <id>start-jetty</id>
                <phase>pre-integration-test</phase>
                <goals>
                    <goal>run-war</goal>
                </goals>
                <configuration>
                    <daemon>true</daemon>
                    <contextPath>agepro-prototype</contextPath>
                    <webApp>
                        ${project.build.directory}/agepro-prototype.war
                    </webApp>
                </configuration>
            </execution>
            <execution>
                <id>stop-jetty</id>
                <phase>post-integration-test</phase>
                <goals>
                    <goal>stop</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <connectors>
                <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                    <port>9091</port> 
                </connector>
            </connectors>
            <stopPort>9092</stopPort>
            <stopKey>test</stopKey>
        </configuration>
        <dependencies>
            <dependency>
                <groupId>postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <version>9.1-901-1.jdbc4</version>
            </dependency>
        </dependencies>
    </plugin>
</plugins>
</build>

<dependencies>
    <dependency>
        <groupId>postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.1-901-1.jdbc4</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

src/main/webapp/WEB-INF/lib を使用して postgresql jar (データソース (postegresql-driver) の jetty によって呼び出される) を配置したくありません。戦争に巻き込まれたくない(クライアント側)。したがって、trueを使用したいのですが、postgresqlをsrc/test/resourcesに配置すると、それが見つからない/認識されません

jar をフォルダー (src/main/resources または src/main/webapp/WEB-INF/classes) に配置しないでください。それらはすべて、pom で依存関係として定義する必要があります。

また、テストリソース/クラスを含まないパッケージ化された戦争を使用しているため、webApp構成要素を定義するときにuseTestClasspathが無視されていると思います

于 2012-05-09T11:00:39.277 に答える