首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行默认值-目标com.google.appengine:appengine-maven-plugin:1.9.32:update的cli失败

执行默认值-目标com.google.appengine:appengine-maven-plugin:1.9.32:update的cli失败
EN

Stack Overflow用户
提问于 2016-03-07 16:32:21
回答 2查看 4.5K关注 0票数 1

我试图做的是部署/更新我的网页应用程序使用谷歌appengine插件的maven。

因此,我在我的pom.xml文件中添加了插件:

代码语言:javascript
复制
<project>

    <!-- .. -->

    <profiles>
        <profile>
            <build>
                <pluginManagement>
                    <plugins>

                        <plugin>
                            <groupId>com.google.appengine</groupId>
                            <artifactId>appengine-maven-plugin</artifactId>
                            <version>${appengine.version}</version>
                            <configuration>
                                <enableJarClasses>false</enableJarClasses>
                                <version>${app.version}</version>
                            </configuration>
                        </plugin>

                        <plugin>
                            <groupId>com.google.appengine</groupId>
                            <artifactId>gcloud-maven-plugin</artifactId>
                            <version>${gcloud.plugin.version}</version>
                            <configuration>
                                <set_default>true</set_default>
                            </configuration>
                        </plugin>

                    </plugins>
                </pluginManagement>

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

            </build>
        </profile>
    </profiles>
</project>

我还添加了pluginGroup:

代码语言:javascript
复制
  <pluginGroups>
    <!-- pluginGroup
     | Specifies a further group identifier to use for plugin lookup.
    <pluginGroup>com.your.plugins</pluginGroup>
    -->
    <pluginGroup>com.google.appengine</pluginGroup>
  </pluginGroups>

但是,如果我打电话给mvn appengine:update,我将收到

代码语言:javascript
复制
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] mz-parent
[INFO] mz-web-shared
[INFO] mz-data-model
[INFO] mz-web-client
[INFO] mz-mobile-rest-shared
[INFO] mz-mobile-rest-api
[INFO] mz-web-server
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building mz-parent 0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> appengine-maven-plugin:1.9.32:update (default-cli) > package @ mz-parent >>>
[INFO]
[INFO] --- maven-enforcer-plugin:1.2:enforce (enforce-maven) @ mz-parent ---
[INFO]
[INFO] <<< appengine-maven-plugin:1.9.32:update (default-cli) < package @ mz-parent <<<
[INFO]
[INFO] --- appengine-maven-plugin:1.9.32:update (default-cli) @ mz-parent ---
[INFO]
[INFO] Google App Engine Java SDK - Updating Application
[INFO]
[INFO] Retrieving Google App Engine Java SDK from Maven
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] mz-parent .................................... FAILURE [  0.390 s]
[INFO] mz-web-shared ................................ SKIPPED
[INFO] mz-data-model ................................ SKIPPED
[INFO] mz-web-client ................................ SKIPPED
[INFO] mz-mobile-rest-shared ........................ SKIPPED
[INFO] mz-mobile-rest-api ........................... SKIPPED
[INFO] mz-web-server ................................ SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.460 s
[INFO] Finished at: 2016-03-18T00:33:58+01:00
[INFO] Final Memory: 16M/226M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.google.appengine:appengine-maven-plugin:1.9.32:update (default-cli) on project mz-parent: Execution default-cli of goal com.google.appengine:appengine-maven-plugin:1.9.32:update failed. NoSuchElementException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.google.appengine:appengine-maven-plugin:1.9.32:update (default-cli) on project mz-parent: Execution default-cli of goal com.google.appengine:appengine-maven-plugin:1.9.32:update failed.
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:224)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-cli of goal com.google.appengine:appengine-maven-plugin:1.9.32:update failed.
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
        ... 20 more
Caused by: java.util.NoSuchElementException
        at com.google.common.collect.AbstractIterator.next(AbstractIterator.java:154)
        at com.google.common.collect.Iterators.find(Iterators.java:717)
        at com.google.common.collect.Iterables.find(Iterables.java:646)
        at com.google.appengine.SdkResolver.getSdk(SdkResolver.java:50)
        at com.google.appengine.appcfg.AbstractAppCfgMojo.resolveAndSetSdkRoot(AbstractAppCfgMojo.java:393)
        at com.google.appengine.appcfg.Update.execute(Update.java:26)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
        ... 21 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

问题:如何解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-06 08:18:07

在本例中,您有一个多模块Maven项目,并且试图在整个构建上执行appengine:update目标,这可能是不可能的,因为父/聚合器pom (在构建失败的地方)不会提供目标期望的文件夹结构,因此会导致错误。

实际上,您不希望在父模块、共享模块或模型模块上执行appengine:update

您应该通过标准构建整个项目。

代码语言:javascript
复制
mvn clean install

然后只在相关的war/ear模块上执行appengine:update (我猜想,在您的情况下是mz-web-server),也就是说,您实际上想要更新到GAE的模块。

代码语言:javascript
复制
cd mz-web-server <-- move to the concerned module
mvn appengine:update

如果您提到的概要文件是在聚合器/父pom中定义并在多模块构建过程中激活的,那么从根目录运行appengine:update将使用定义的配置,并尝试对每个模块执行update目标,这是您不想要的(考虑到错误,您实际上不能合理地执行)。

如果您想继续从根目录运行appengine:update,并且只在相关模块上执行它,那么您应该编辑上面的pluginManagement配置:

  • 只使用pluginManagement插件声明(groupId,artifactId,version)
  • 将该插件的配置移动到相关模块( mz-web-server模块)上
  • 从根pom的appengin-maven-plugin部分中删除plugins声明,并将其移动到相关模块(实际上,在上面移动了配置)。

因此,插件将声明为由多模块构建(通过pluginManagement)管理,但没有在每个模块中有效地使用(通过plugins),然后只在相关模块中声明和使用。

此外,由于您没有在默认构建期间定义插件的任何execution,所以我认为您甚至不需要配置文件。您定义的配置将只用于显式命令行调用,而不是其他任何调用。

基本上,您可以在您的聚合器/父pom中包含以下内容:

代码语言:javascript
复制
<project>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>com.google.appengine</groupId>
                    <artifactId>appengine-maven-plugin</artifactId>
                    <version>${appengine.version}</version>
                </plugin>

                <plugin>
                    <groupId>com.google.appengine</groupId>
                    <artifactId>gcloud-maven-plugin</artifactId>
                    <version>${gcloud.plugin.version}</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <profiles>
        <profile>
            <!-- do you really need it? :) -->
        </profile>
    </profiles>
</project>

然后,在您的mz-web-server模块中执行以下操作:

代码语言:javascript
复制
<project>

    <build>
        <plugins>
            <plugin>
                <groupId>com.google.appengine</groupId>
                <artifactId>appengine-maven-plugin</artifactId>
                <!-- you don't need to re-define the version here -->
                <!-- version is taken from pluginManagement from the parent -->
                <configuration>
                    <enableJarClasses>false</enableJarClasses>
                    <version>${app.version}</version>
                </configuration>
            </plugin>

            <plugin>
                <groupId>com.google.appengine</groupId>
                <artifactId>gcloud-maven-plugin</artifactId>
                <!-- again, no version here -->
                <configuration>
                    <set_default>true</set_default>
                </configuration>
            </plugin>

        </plugins>
    </build>

</project>

注意pluginManagementpluginsbuild部分中的不同用法。要进一步阅读,请查看this SO post

票数 4
EN

Stack Overflow用户

发布于 2016-04-07 15:49:52

下面是我的一个GAE项目的工作pom.xml示例:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<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-SNAPSHOT</version>

    <groupId>com.gae.mvn.demo</groupId>
    <artifactId>gae-maven-demo</artifactId>

    <properties>
        <app.id>your-app-id</app.id>
        <app.version>1</app.version>
        <appengine.version>1.9.32</appengine.version>
        <gcloud.plugin.version>2.0.9.74.v20150814</gcloud.plugin.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.showDeprecation>true</maven.compiler.showDeprecation>
        <spring.version>4.2.5.RELEASE</spring.version>
    </properties>

    <prerequisites>
        <maven>3.1.0</maven>
    </prerequisites>

    <dependencies>
        <!-- Compile/runtime dependencies -->
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-api-1.0-sdk</artifactId>
            <version>${appengine.version}</version>
        </dependency>
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-endpoints</artifactId>
            <version>${appengine.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </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.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <version>2.1</version>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>display-dependency-updates</goal>
                            <goal>display-plugin-updates</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <version>3.1</version>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.4</version>
                <configuration>

                    <archiveClasses>true</archiveClasses>
                    <webResources>
                        <resource>
                            <directory>${basedir}/src/main/webapp/WEB-INF</directory>
                            <filtering>true</filtering>
                            <targetPath>WEB-INF</targetPath>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.google.appengine</groupId>
                <artifactId>appengine-maven-plugin</artifactId>
                <version>${appengine.version}</version>
                <configuration>
                    <enableJarClasses>false</enableJarClasses>
                    <version>${app.version}</version>
                </configuration>
            </executions>
            </plugin>
            <plugin>
                <groupId>com.google.appengine</groupId>
                <artifactId>gcloud-maven-plugin</artifactId>
                <version>${gcloud.plugin.version}</version>
                <configuration>
                    <set_default>true</set_default>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35848991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档