将Java 7与官方Google Appengine Maven插件结合使用

Mor*_*sen 3 java google-app-engine maven-plugin maven java-7

我在使用官方Maven插件和Java 7与Google Appengine时遇到了麻烦.

组态

我的项目配置pom.xml非常简单:

在我配置的属性部分中:

<gae.version>1.7.4</gae.version>
Run Code Online (Sandbox Code Playgroud)

后来我使用插件:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.3.2</version>
  <configuration>
    <source>1.7</source>
    <target>1.7</target>
  </configuration>
</plugin>
<plugin>
  <groupId>com.google.appengine</groupId>
  <artifactId>appengine-maven-plugin</artifactId>
  <version>${gae.version}</version>
</plugin>
Run Code Online (Sandbox Code Playgroud)

错误信息

每当我运行时,mvn appengine:update我都会收到以下错误:

无法更新应用程序:应用程序包含Java 7类,但尚未设置--use_java7标志.

我试图解决它

当然,我试图解决这个问题.运行

mvn appengine:update --use_java7
Run Code Online (Sandbox Code Playgroud)

要么

mvn appengine:update -D--use_java7
Run Code Online (Sandbox Code Playgroud)

没有帮助,因为该标志不用于Maven插件,而是用于appcfg脚本.

如何将标志传递给脚本,以便我可以使用Java 7(或者我还能做什么)?

yor*_*rkw 5

App Engine Java 7支持目前用于Trusted Tester,尚未公开,您可以在此处应用Trusted Tester .

幸运的是,最新的官方maven插件确实实现了这个功能,请参阅AbstractAppCfgMojo.java:

... ...

/**
 * Use the App Engine Java 7 runtime for this app.
 *
 * @parameter
 */
protected boolean useJava7;

... ...

if (useJava7) {
  arguments.add("--use_java7");
}

... ...
Run Code Online (Sandbox Code Playgroud)

您可以在pom.xml中使用以下插件配置来启用Java7支持:

</build>
  <plugins>
    ... ...
    <plugin>
      <groupId>com.google.appengine</groupId>
      <artifactId>appengine-maven-plugin</artifactId>
      <version>${gae.version}</version>
      <configuration>
        <useJava7>true</useJava7>
      </configuration>
    </plugin>
  </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)