7

当我尝试使用 appengine-maven-plugin 更新 appengine-application 时,出现以下错误:

400 Bad Request
Error when loading application configuration:
Unable to assign value '1.8.3' to attribute 'version':
Value '1.8.3' for version does not match expression '^(?:^(?!-)[a-z\d\-]{0,62}[a-z\d]$)$'

这让我感到困惑,因为我的 appengine-web.xml 如下所示:

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <application>helloworld</application>
    <version>0-0-1</version>
    <threadsafe>true</threadsafe>
    <precompilation-enabled>false</precompilation-enabled>

    <system-properties>
        <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
    </system-properties>
</appengine-web-app>

我想知道为什么 appengine-maven-plugin 想要使用 1.8.3 作为应用程序版本。1.8.3 是我想使用的 appengine-sdk 版本。在我的 POM 中,它的配置如下:

<dependency>
    <groupId>com.google.appengine</groupId>
    <artifactId>appengine-api-1.0-sdk</artifactId>
    <version>${appengine.version}</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

后来

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

${appengine.app.version} 指向 1.8.3 我在 3.1 版和 Java 1.7.0_25 中使用 Maven

我错了什么?任何人都可以帮助我吗?非常感谢

4

5 回答 5

12

我遇到了和你描述的一样的问题。当我在配置元素中添加“版本”元素时,值指向我的 appengine-web.xml 文件中的应用程序版本,mvn appengine:update成功完成。(maven v3.1.0,appengine 插件 v1.8.3)

在 pom.xml 中:

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

在 appengine-web.xml 中:

...
<version>MY-VERSION</version>
...

于 2013-09-26T23:52:30.970 回答
5

如果您像我一样使用原型骨架生成项目,并且您有一个类似于

<properties>
    <app.id>MY-GAE-PROJECT-ID</app.id>
    <app.version>1</app.version>
    <appengine.version>1.9.20</appengine.version>
    <gcloud.plugin.version>0.9.58.v20150505</gcloud.plugin.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

在你的 pom.xml 和你的 appengine-web.xml 看起来像

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>${app.id}</application>
<version>1</version>
etc....

然后,当它制作完成时,将 appengine-web.xml 修改为 ${app.version} 因为他们已经非常有帮助地添加了带有原型的属性,但从未在任何地方使用它。然后,将您的 pom.xml 的 app.version 更新为您的适当版本(如果您不使用“1”)。然后,在 pom.xml 中向下滚动到您看到的位置

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

并在配置块内添加

                <version>${app.version}</version>
于 2015-05-27T15:16:15.573 回答
0

尝试将 appengine-web.xml 条目从 更改<version>0-0-1</version><version>1</version>。问候,亚当。

于 2013-08-26T20:37:37.233 回答
0

通过添加插件>配置>版本标签(如下)仅更改了 pom.xml 文件...

<plugin>
    <groupId>com.google.appengine</groupId>
    <artifactId>appengine-maven-plugin</artifactId>
    <version>${project.appengine.version}</version>
    <configuration>
      <port>8888</port>
     *<version>${app.version}</version>*
    </configuration>
</plugin>
于 2015-06-22T19:50:30.480 回答
0

我解决这个问题的方法在我执行的控制台mvn clean installappcfg.cmd -A [your app] update target\appengine-try-java-1.0命令中是微不足道的。

于 2015-10-28T22:52:57.070 回答