使用Android Studio,我创建了一个带有云端点后端的Android项目(工具> Google Cloud端点>生成AppEngine后端)。初始设置有效,我可以让Android应用看到暴露的云端点。
然而,在向AppEngine项目添加更多组件(更多实体,端点,servlet等)之后在Maven目标appengine-maven-plugin期间AppEngine构建失败:使用命令行增强太长错误。
通过研究,看来这个目标代表了datanucleus-maven-plugin:增强目标(请参阅Maven mojo源代码here)。当我使用Maven的-X选项从命令行运行目标时,我看到增强器试图在所有类(servlet,非实体等)上运行,并且命令行长度超过了Window的限制。
此解决方案似乎只指定了要增强的特定实体。这个post描述了如何为此配置Maven插件。
这一切似乎都很公平,但我尝试从我的pom.xml配置插件没有任何效果。从命令行执行,我看到这样的消息:datanucleus增强目标是使用它的默认配置而不是从pom配置的。
我是一名Maven新手,所以如果有人能够解释Maven appengine enhance mojo期望源代码似乎在第115行中获取的配置,我们将非常感激:mojoDescriptor .getMojoConfiguration()
我的pom.xml看起来像这样:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>war</packaging>
<version>1.0</version>
<groupId>com.myproject</groupId>
<artifactId>MyProject</artifactId>
<properties>
<appengine.target.version>1.8.3</appengine.target.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--Found by examining mvn com.google.appengine:appengine-maven-plugin:1.8.3:enhance -X
see https://code.google.com/p/appengine-maven-plugin/source/browse/src/main/java/com/google/appengine/AppengineEnhancerMojo.java?spec=svn834b839bf5deab60499ecfb85facd55f06f8e258&r=834b839bf5deab60499ecfb85facd55f06f8e258
-->
<appengine.enhancerApi>JPA</appengine.enhancerApi>
</properties>
<dependencies>
<!-- Compile/runtime dependencies -->
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-api-1.0-sdk</artifactId>
<version>${appengine.target.version}</version>
</dependency>
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-endpoints</artifactId>
<version>${appengine.target.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jpa_2.0_spec</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>net.sf.jsr107cache</groupId>
<artifactId>jsr107cache</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>com.google.appengine.orm</groupId>
<artifactId>datanucleus-appengine</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.ganyo</groupId>
<artifactId>gcm-server</artifactId>
<version>1.0.2</version>
</dependency>
<!-- Test Dependencies -->
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-testing</artifactId>
<version>${appengine.target.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-api-stubs</artifactId>
<version>${appengine.target.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-maven-plugin</artifactId>
<version>3.2.0-release</version>
</dependency>
</dependencies>
<build>
<!-- for hot reload of the web application-->
<outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes
</outputDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<version>2.5.1</version>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<webXml>
${project.build.directory}/generated-sources/appengine-endpoints/WEB-INF/web.xml
</webXml>
<webResources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>
${project.build.directory}/generated-sources/appengine-endpoints
</directory>
<!-- the list has a default value of ** -->
<includes>
<include>WEB-INF/*.discovery</include>
<include>WEB-INF/*.api</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
<!--
No config settings get applied?
-->
<plugin>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-maven-plugin</artifactId>
<version>3.2.0-release</version>
<configuration>
<fork>false</fork>
<verbose>true</verbose>
<metadataIncludes>some_path</metadataIncludes>
</configuration>
<executions>
<execution>
<id>default-enhance</id>
<configuration>
<fork>false</fork>
<verbose>true</verbose>
<metadataIncludes>some_path</metadataIncludes>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>1.8.3</version>
<configuration>
<enableJarClasses>false</enableJarClasses>
</configuration>
<executions>
<execution>
<goals>
<goal>endpoints_get_discovery_doc</goal>
<!--goal>endpoints_get_client_lib</goal-->
<goal>enhance</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-maven-plugin</artifactId>
<version>3.2.0-release</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
谢谢!