【问题标题】:Appengine Modules Maven Error during DevSever Goal RunDevSever 目标运行期间的 Appengine 模块 Maven 错误
【发布时间】:2014-04-13 19:18:44
【问题描述】:
我一直在尝试运行一个支持模块的新项目,但一直出现以下错误,无法调试,
com.google.apphosting.utils.config.EarHelper reportConfigException
[INFO] INFO:应用程序目录 'path-to-project/DemoEar-1.0.0-SNAPSHOT/DemoWarApp' 必须存在并且是一个目录。
我的模块结构如下
main application.xml 包含
<module>
<web>
<web-uri>DemoWarApp</web-uri>
<context-root>DemoWarApp</context-root>
</web>
</module>
它显然没有指向正确的战争文件夹路径。有人知道怎么解决吗?
谢谢
【问题讨论】:
标签:
java
google-app-engine
maven
gae-module
app-engine-modules
【解决方案1】:
创建的包文件夹必须与 application.xml 中的 web-uri 匹配。因此,您可以在 maven-ear-plugin 中使用 bundleFileName 更改捆绑文件夹名称
<modules>
<webModule>
<groupId>groupId-of-DemoWarApp</groupId>
<artifactId>artifactId-of-DemoWarApp</artifactId>
<bundleFileName>DemoWarApp</bundleFileName>
</webModule>
</modules>
或者您每次都将 web-uri 更改为 {module-name}-{version} 以匹配创建的包文件夹名称。
我会推荐一个独立于版本的捆绑包bundleFileName(与您的web-uri 相同),这样您就不必在版本更改时费心了。
完整的耳朵插件sn-p:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.9</version>
<configuration>
<modules>
<webModule>
<groupId>groupId-of-DemoWarApp</groupId>
<artifactId>artifactId-of-DemoWarApp</artifactId>
<bundleFileName>DemoWarApp</bundleFileName>
</webModule>
</modules>
<version>5</version>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<unpackTypes>war</unpackTypes>
</configuration>
</plugin>