Maven + App Engine + Google Eclipse 插件

Posted

技术标签:

【中文标题】Maven + App Engine + Google Eclipse 插件【英文标题】:Maven + App Engine + Google Eclipse Plugin 【发布时间】:2012-04-26 02:59:16 【问题描述】:

有没有办法让我拥有一个兼容 Maven 的 Google App Engine (Java) 项目,该项目也与 Eclipse 中的 Google Eclipse 插件兼容?

谢谢!

编辑:

现在对 Maven 插件的原生支持:

https://developers.google.com/appengine/docs/java/tools/maven

【问题讨论】:

【参考方案1】:

取决于您所说的“兼容”,它取决于您使用 GAE 插件的哪些功能。我们使用 appengine maven 插件http://code.google.com/p/maven-gae-plugin/ 和 eclipse,它们似乎可以很好地协同工作,但我们没有使用 GWT 或 JDO。与大多数 maven/eclipse 一样,我发现最好从命令行运行你的东西,只使用 eclipse 作为编辑器。

【讨论】:

我希望能够使用 Google Eclipse 插件的所有 GAE 功能,同时能够使用 Maven 的依赖项/测试/部署功能。就像通过 Maven 等链接应用程序引擎 sdk。我想将我的项目集成到 Jenkins 中。谢谢! 另外,我没有使用任何特定的工具框架,例如 GWT/JDO :) 是的,所有这些都有效。但是您可能需要手动编辑您的 GAE 插件设置(在 eclipse 的项目配置中)以使用 ~/.m2/repository/.... 为您的 GAE SDK。查看文档,确保您还将配置设置为指向 /src/webapp 中的战争。 我不断收到此错误:“SDK 位置 '\.m2\repository\com\google\appengine\appengine-api-1.0-sdk\1.7.2\appengine-api-1.0-sdk- 1.7.2.jar' 不是目录”。我已经将 Maven 依赖项推送到类路径的底部而没有结果。有人见过这个吗?谢谢 是目录吗?您是否定义了 settings.xml 文件?如果你这样做,你可能指向错误的位置。该目录应该在您的主目录中(在 unix ~/.m2/repository 上)【参考方案2】:

我使用 maven 和 GAE 使用 JDO 一年以来没有任何问题。 这是我在 MacOSX Snow Leopard 上的配置:

Apache Maven 3.0.3 Eclipse 版本:3.7.1 m2e - Eclipse 1.0.100.20110804-1717 的 Maven 集成

将 Eclipse 与 Maven 完全集成(从命令行“mvn test”和 Eclipse 中的 JUnit 界面运行所有测试)的重要一点是以这种方式拥有 .project 文件:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>PROJECT_NAME</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.m2e.core.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.m2e.core.maven2Nature</nature>
        <nature>org.eclipse.jdt.core.javanature</nature>
    </natures>
</projectDescription>

插件已移至此处: https://github.com/maven-gae-plugin/maven-gae-plugin

【讨论】:

【参考方案3】:

+1 对 Rick 的回答,但我想补充一下:

Google 对此有一个教程:http://code.google.com/p/google-web-toolkit/wiki/WorkingWithMaven

也就是说,我们从来没有让它 100% 工作。 maven-gwt-plugin 似乎与 Eclipse 有问题,如果由于 APT 而使用 RequestFactory,情况会变得更糟。 maven-gae-plugin 似乎玩得很好。从 cmdline 运行要容易得多。此外,Eclipse 3.7/m2e 中有一个已知的错误[需要引用],它会阻止很多事情正常工作。

【讨论】:

您的意思是使用 maven-gae-plugin 运行命令行?我想这就是我最终要做的......谢谢! 是的。 mvn package gae:deploy = 胜利。 我不断收到此错误:“SDK 位置 '\.m2\repository\com\google\appengine\appengine-api-1.0-sdk\1.7.2\appengine-api-1.0-sdk- 1.7.2.jar'不是一个目录”是你看到的吗? 已解决,尽管 GAE 容器仍在类路径中,但不知何故 GAE Nature 消失了!!【参考方案4】:

如前所述,google 提供了对 maven 的支持: https://developers.google.com/appengine/docs/java/tools/maven

但看起来它不能完全与 Eclipse 一起工作(如 cmets 之一所述:“SDK location '.m2\repository\com\google\appengine\appengine-api-1.0-sdk\1.7.2\appengine- api-‌​1.0-sdk-1.7.2.jar' 不是目录")

为了解决这个问题,我使用了 maven-eclipse-plugin,并为 GAE/JRE 指定了容器:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-eclipse-plugin</artifactId>
    <version>2.9</version>
    <configuration>
    <classpathContainers>              
<classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer>
<classpathContainer>com.google.appengine.eclipse.core.GAE_CONTAINER</classpathContainer>
    </classpathContainers>
    </configuration>
</plugin>

【讨论】:

【参考方案5】:

我对 GAE + Maven + Eclipse 的一般发现。

规则 1: 使用 GAE 原型生成您的 GAE 项目:https://developers.google.com/appengine/docs/java/tools/maven

规则 2: 如果你想用 Eclipse 开发 - 不要执行“mvn eclipse:eclipse”然后导入 - 这会导致很多问题。而是导入为“Maven 项目”

第 3 条规则: YouTube 上描述的如何创建 MVN/GAE/Eclipse 项目的简单/有效解决方案http://www.youtube.com/watch?v=oC6bJp5X3LI

PS。我正在使用单独的 Web/DAO/Domain 模块进行项目 - 我稍后会发布我的发现和线索。

【讨论】:

以上是关于Maven + App Engine + Google Eclipse 插件的主要内容,如果未能解决你的问题,请参考以下文章

App Engine、JDO 和 Maven。启动时出错

App Engine 的 Maven Central Google 镜像 settings.xml

带有 maven 开发服务器的 Google App Engine Java 失败:缺少“guestbook/target/guestbook-1.0-SNAPSHOT”

如何在使用 GAE Maven 插件时在 IDEA 中调试 Java Google App Engine 应用程序?

如何在 Android Studio 中手动安装 App Engine?

部署失败:Google App Engine 上的 Kotlin Spring Boot 应用