有人可以概述将maven GWT项目转换为GAE + JDO项目所需的确切步骤

时间:2012-06-21 19:04:07

标签: google-app-engine gwt maven jdo

我发现使用带有-maven开关的webApp会生成符合maven标准的项目。现在,有了这个项目,我必须执行以下步骤。

1)添加gae依赖项 2)添加jdo依赖项 3)添加app-engine配置文件 4)添加jdo配置文件

还有其他什么,我使用app引擎1.6.6和gwt 2.4。请概述确切的步骤和依赖关系。我在其他堆栈溢出问题中找到关于gae-maven插件的链接,看起来很旧,并且效果不好。

2 个答案:

答案 0 :(得分:1)

这是我的pom.xml:我使用GAE,GWT和JDO。希望它有所帮助:

<?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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!-- The Basics -->
    <groupId>YOUR COMPANY</groupId>
    <artifactId>YOUR ARTIFACT</artifactId>
    <version>VERSION</version>
    <packaging>pom</packaging>
    <dependencies>
        <!-- GWT dependencies -->
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt-servlet</artifactId>
            <version>${gwt.version}</version>
        </dependency>

        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt-user</artifactId>
            <version>${gwt.version}</version>
            <scope>provided</scope>
        </dependency>
        <!-- GAE libraries for local testing as described here: http://code.google.com/appengine/docs/java/howto/unittesting.html -->
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-api-labs</artifactId>
            <version>${gae.version}</version>
        </dependency>

        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-api-stubs</artifactId>
            <version>${gae.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-testing</artifactId>
            <version>${gae.version}</version>
            <scope>test</scope>
        </dependency>

        <!-- Google App Engine meta-package -->
        <dependency>
            <groupId>net.kindleit</groupId>
            <artifactId>gae-runtime</artifactId>
            <version>${gae.version}</version>
            <type>pom</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>javax.jdo</groupId>
            <artifactId>jdo2-api</artifactId>
            <version>2.3-eb</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-api-1.0-sdk</artifactId>
            <version>${gae.version}</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-servlet_2.5_spec</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.7</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-parent</artifactId>
            <version>1.6.1</version>
            <type>pom</type>
        </dependency>

    </dependencies>

    <!-- Specify hard-coded project properties here -->
    <properties>
        <!-- GWT version -->
        <gwt.version>2.4.0</gwt.version>

        <!-- port defaults to 8080 -->
        <gae.port>8080</gae.port>

        <!-- Produce detailed JS during GWT compilation for development environment -->
        <gwt.style>DETAILED</gwt.style>

        <!-- Sets the project's default encoding. http://docs.codehaus.org/display/MAVENUSER/POM+Element+for+Source+File+Encoding -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <!-- This is just for "eclipse:eclipse" goal to always attempt downloading 
            sources -->
        <downloadSources>true</downloadSources>

        <!-- Specify AppEngine version for your project. It should match SDK version 
            pointed to by ${gae.home} property (Typically, one used by your Eclipse plug-in) -->
        <gae.version>1.6.6</gae.version>

        <!-- Upload to http://test.latest.<applicationName>.appspot.com by default --> 
        <datanucleus.version>1.1.5</datanucleus.version>

        <gae.plugin.version>0.9.2</gae.plugin.version>
    </properties>

答案 1 :(得分:1)

它的价值,这里是一个pom我刚刚放在一起似乎工作正常wuth gae 1.7.4和GWT 2.5与JDO 3.0 -

    <?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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.nimbits.cloudplatform</groupId>
  <artifactId>nimbitsplatform</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>nimbits-02</name>

  <dependencies>
      <dependency>
          <groupId>javax.jdo</groupId>
          <artifactId>jdo-api</artifactId>
          <version>3.0</version>
      </dependency>
    <!-- Google App Engine meta-package -->
    <!--<dependency>-->
      <!--<groupId>net.kindleit</groupId>-->
      <!--<artifactId>gae-runtime</artifactId>-->
      <!--<version>${gae.version}</version>-->
      <!--<type>pom</type>-->
    <!--</dependency>-->

    <dependency>
      <groupId>javax.transaction</groupId>
      <artifactId>jta</artifactId>
      <version>1.1</version>
    </dependency>

    <!-- GWT dependencies -->
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-servlet</artifactId>
      <version>${gwt.version}</version>
    </dependency>

    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-user</artifactId>
      <version>${gwt.version}</version>
      <scope>provided</scope>
    </dependency>


      <!-- J2EE Servlet API. We need it to compile IndexServlet class. You can probably remove
        it, if you don't explicitly use Servlets -->
    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-servlet_2.5_spec</artifactId>
      <version>1.2</version>
      <scope>provided</scope>
    </dependency>

    <!-- Make use of JSP tags. Remove, if you don't use JSPs -->
    <dependency>
      <artifactId>standard</artifactId>
      <groupId>taglibs</groupId>
      <version>1.1.2</version>
      <type>jar</type>
      <scope>runtime</scope>
    </dependency>

    <!-- These dependencies are here just for enabling logging -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.6.1</version>
    </dependency>

    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>0.9.24</version>
    </dependency>

    <!-- Test scope -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.5</version>
      <scope>test</scope>
    </dependency>

    <!-- GAE libraries for local testing as described here: http://code.google.com/appengine/docs/java/howto/unittesting.html -->
    <dependency>
      <groupId>com.google.appengine</groupId>
      <artifactId>appengine-api-labs</artifactId>
      <version>${gae.version}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>com.google.appengine</groupId>
      <artifactId>appengine-api-stubs</artifactId>
      <version>${gae.version}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>com.google.appengine</groupId>
      <artifactId>appengine-testing</artifactId>
      <version>${gae.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <!-- This plug-in "enhances" your domain model objects (i.e. makes them persistent for
        datanucleus) -->
      <plugin>
        <groupId>org.datanucleus</groupId>
        <artifactId>maven-datanucleus-plugin</artifactId>
        <version>1.1.4</version>
        <configuration>
          <!-- Make sure this path contains your persistent classes! -->
          <mappingIncludes>**/model/*.class</mappingIncludes>
          <verbose>true</verbose>
          <enhancerName>ASM</enhancerName>
          <api>JDO</api>
        </configuration>
        <executions>
          <execution>
            <phase>compile</phase>
            <goals>
              <goal>enhance</goal>
            </goals>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-core</artifactId>
            <version>1.1.5</version>
            <exclusions>
              <exclusion>
                <groupId>javax.transaction</groupId>
                <artifactId>transaction-api</artifactId>
              </exclusion>
            </exclusions>
          </dependency>
          <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-rdbms</artifactId>
            <version>1.1.5</version>
          </dependency>
          <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-enhancer</artifactId>
            <version>1.1.4</version>
          </dependency>
        </dependencies>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.1-beta-1</version>
        <configuration>
          <webResources>
            <resource>
              <directory>src/main/webapp</directory>
              <filtering>true</filtering>
              <includes>
                <include>**/appengine-web.xml</include>
              </includes>
            </resource>
          </webResources>
        </configuration>
      </plugin>

      <!-- Maven GWT plugin (ex. http://gwt-maven.googlecode.com/svn/docs/maven-googlewebtoolkit2-plugin/index.html)
        http://mojo.codehaus.org/gwt-maven-plugin -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>gwt-maven-plugin</artifactId>
        <version>1.2</version>
        <configuration>
          <logLevel>INFO</logLevel>

          <!-- match -Dgae.port -->
          <port>${gae.port}</port>

           <!--&lt;!&ndash;This must point to your GWT modules!&ndash;&gt;-->
          <!--<compileTargets>-->
            <!--<value>net.kindleit.gae.example.Messages</value>-->
          <!--</compileTargets>-->

          <!-- This is for generating Asynch interfaces -->
          <!-- <servicePattern>**/client/*Service.java</servicePattern> -->

          <extraJvmArgs>-Xmx512m</extraJvmArgs>
          <!--<jvm>${JAVA_HOME}/bin/java</jvm> -->
          <!--<noServer>false</noServer> -->

          <!-- TODO This should help running GAE stuff in hosted mode (when gwt-maven-plugin-1.2
            is released, see http://jira.codehaus.org/browse/MGWT-112) -->
          <server>com.google.appengine.tools.development.gwt.AppEngineLauncher
                    </server>

          <runTarget>/index.html</runTarget>
          <style>DETAILED</style>
          <webXml>war/WEB-INF/web.xml</webXml>
          <!-- this parameter is VERY important with automatic mode - has to match the version
            in your declared deps -->
          <!-- if this is set incorrect (not a match), or left out (default is 1.5.2 for 2.0-beta23)
            you will have mysterious errors -->
          <gwtVersion>${gwt.version}</gwtVersion>
        </configuration>
        <executions>
          <!-- <execution> <id>generateAsynch</id> <phase>generate-sources</phase> <goals>
            <goal>generateAsync</goal> </goals> </execution> -->
          <execution>
            <phase>compile</phase>
            <goals>
              <goal>compile</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- The actual maven-gae-plugin. Type "mvn gae:run" to run project, "mvn gae:deploy"
        to upload to GAE. -->
      <plugin>
        <groupId>net.kindleit</groupId>
        <artifactId>maven-gae-plugin</artifactId>
        <version>0.9.4</version>
      </plugin>

      <!-- Upload application to the appspot automatically, during release:perform -->
      <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
          <goals>gae:deploy</goals>
        </configuration>
      </plugin>

      <!-- Java compiler version -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.0</version>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
    </plugins>


      <pluginManagement>
          <plugins>
              <!-- Copy dependencies to war/WEB-INF/lib for GAE proj compliance. -->
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-dependency-plugin</artifactId>
                  <executions>
                      <execution>
                          <id>default-cli</id>
                          <goals>
                              <goal>copy-dependencies</goal>
                          </goals>
                          <configuration>
                              <outputDirectory>${basedir}/webapp/WEB-INF/lib/</outputDirectory>
                              <overWriteReleases>false</overWriteReleases>
                              <overWriteSnapshots>false</overWriteSnapshots>
                              <overWriteIfNewer>true</overWriteIfNewer>
                              <excludeArtifactIds>gwt-user,gwt-dev</excludeArtifactIds>
                              <includeScope>runtime</includeScope>
                          </configuration>
                      </execution>
                  </executions>
              </plugin>
          </plugins>
      </pluginManagement>
  </build>

  <!-- Specify hard-coded project properties here -->
  <properties>

    <!-- Sets the project's default encoding.
         http://docs.codehaus.org/display/MAVENUSER/POM+Element+for+Source+File+Encoding -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <!-- This is just for "eclipse:eclipse" goal to always attempt downloading sources -->
    <downloadSources>true</downloadSources>

    <!-- Specify AppEngine version for your project. It should match SDK version pointed to
      by ${gae.home} property (Typically, one used by your Eclipse plug-in) -->
    <gae.version>1.7.2</gae.version>
      <gae.home>/mnt/devel/lib/appengine-java-sdk-1.7.4</gae.home>
    <!-- GWT version -->
    <gwt.version>1.6.3</gwt.version>
      <appengine.target.version>1.7.4</appengine.target.version>
    <!-- Upload to http://test.latest.<applicationName>.appspot.com by default -->
    <gae.application.version>test</gae.application.version>

    <!-- port defaults to 8080 -->
    <gae.port>8082</gae.port>

    <!-- Produce detailed JS during GWT compilation for development environment -->
    <gwt.style>DETAILED</gwt.style>
  </properties>

  <profiles>

    <!-- We can configure our integration server to activate this profile and perform gae:deploy,
      thus uploading latest snapshot to the http://1.latest.<applicationName>.appspot.com automatically -->
    <profile>
      <id>integration-build</id>
      <properties>
        <gae.application.version>stage</gae.application.version>

        <!-- Produce pretty JS during GWT compilation for test environment -->
        <gwt.style>PRETTY</gwt.style>
      </properties>
    </profile>

    <!-- This profile will activate automatically during release and upload application to
      the http://2.latest.<applicationName>.appspot.com (We might want to set the 2nd version as
      our applications Default version to be accessible at http://<applicationName>.appspot.com) -->
    <profile>
      <id>release-build</id>
      <activation>
        <property>
          <name>performRelease</name>
          <value>true</value>
        </property>
      </activation>

      <properties>
        <!-- During release, set application version in appengine-web.xml to 2 -->
        <gae.application.version>release</gae.application.version>

        <!-- Produce compressed JS during GWT compilation for production environment -->
        <gwt.style>OBFUSCATED</gwt.style>
      </properties>
    </profile>
  </profiles>

</project>