Android Studio Cloud Endpoint项目Maven增强目标因命令行太长而失败

时间:2013-08-15 17:15:33

标签: maven jpa

使用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>

谢谢!

0 个答案:

没有答案