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

目标。但这只是在前台启动开发服务器。我希望 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>

此外,也许你会在执行时发现这个执行:线程“关闭”中的异常 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 回答