2

KindleITからGoogle の App Engine Mavenプラグインに切り替えたい。KindleIT プラグインを使用する場合、統合テスト前の段階で GAE 開発サーバーを起動しました。統合後テストで統合テストが完了したら、開発サーバーをシャットダウンします。単体テストと統合テストを実行するために、 surefire プラグインを使用しています。

<plugin>
  <groupId>net.kindleit</groupId>
  <artifactId>maven-gae-plugin</artifactId>
  <version>0.9.5</version>
  <executions>
    <execution>
      <id>gae-start</id>
      <phase>pre-integration-test</phase>
      <goals>
        <goal>start</goal>
      </goals>
    </execution>
    <execution>
      <id>gae-stop</id>
      <phase>post-integration-test</phase>
      <goals>
        <goal>stop</goal>
      </goals>
    </execution>
  </executions> 
</plugin>

ローカルで実行されている GAE アプリに対して統合テストを実行したいので、これを行っています。Google の App Engine プラグインで同じことを行うにはどうすればよいですか?

<plugin>
  <groupId>com.google.appengine</groupId>
  <artifactId>appengine-maven-plugin</artifactId>
  <version>${gae.version}</version>
</plugin>

私はのようなものを使いたい

mvn appengine:devserver

ゴール。しかし、これは devserver をフォアグラウンドで起動するだけです。テストの前に Maven がバックグラウンドで開発サーバーを起動するようにします。

4

2 に答える 2

2

これは公式のプラグインではまだサポートされていませんが、私たちはそれに取り組んでおり、すぐにスナップショット ビルドに組み込むことを望んでいます。私はあなたに投稿し続けますが、この問題は私がそれに関する私の仕事を追跡しているところです: https://code.google.com/p/appengine-maven-plugin/issues/detail?id=5

于 2013-04-15T23:31:55.663 に答える
1

maven-jetty-plugin を使用します。このプラグインは jettty インスタンスを開始し、war/gae プロジェクトを実行します。

このプラグインを統合テスト前のフェーズで実行してから統合テストを実行すると、統合テスト後のフェーズでサーバーがシャットダウンします。

私はgaeアプリケーションで作業しており、このプラグインで正常に動作します.

これは私の構成です。お役に立てば幸いです。

        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>6.1.15</version>
            <configuration>
                <contextPath>/</contextPath>
                <scanIntervalSeconds>3</scanIntervalSeconds>
                <stopKey>foo</stopKey>
                <stopPort>9999</stopPort> 
                <connectors>
                    <connector implementation ="org.mortbay.jetty.nio.SelectChannelConnector" >
                        <port>${deploy.server.port}</port>
                        <maxIdleTime>60000</maxIdleTime>
                    </connector>
                </connectors>
            </configuration>
            <executions>
                    <execution>
                            <id>start-jetty</id>
                            <phase>pre-integration-test</phase>
                            <goals>
                                    <goal>run</goal>
                            </goals>
                            <configuration>
                                    <scanIntervalSeconds>0</scanIntervalSeconds>
                                    <daemon>true</daemon>
                            </configuration>
                    </execution>
                    <execution>
                            <id>stop-jetty</id>
                            <phase>post-integration-test</phase>
                            <goals>
                                    <goal>stop</goal>
                            </goals>
                    </execution>
            </executions>
        </plugin>
     </plugins>

さらに、実行時に次の実行が見つかるかもしれません: Exception in thread "Shutdown" java.lang.NoClassDefFoundError: org/apache/jasper /runtime/JspApplicationContextImpl

これは、この依存関係を pom.xml に追加することで解決されます

        <dependency>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jsp-2.1</artifactId>
            <version>6.0.0</version>
          </dependency>
于 2013-12-10T09:19:44.110 に答える