有人有示例 GWT 2.7.0 pom 吗?

Does anyone have a sample GWT 2.7.0 pom?

我正在尝试将 Maven 与 GWT 2.7.0 结合使用。谁有小的pom.xml模板?

我特别关注清理/安装/运行(我在之前的项目中使用了gwt:run)...

摘自https://github.com/ArcBees/arcbees-website/blob/master/pom.xml:

<?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>

    <groupId>com.arcbees</groupId>
    <artifactId>website</artifactId>
    <version>3.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>Arcbees Website</name>

    <properties>
        <target.jdk>1.7</target.jdk>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <maven-surefire-plugin.version>2.6</maven-surefire-plugin.version>
        <maven-compiler-plugin.version>2.3.2</maven-compiler-plugin.version>
        <maven-gae-plugin.version>0.9.5</maven-gae-plugin.version>
        <gwt-maven-plugin.version>2.7.0</gwt-maven-plugin.version>
        <maven-clean-plugin.version>2.6.1</maven-clean-plugin.version>

        <gwt.version>2.7.0</gwt.version>
        <gae.version>1.9.9</gae.version>
        <gwtp.version>1.5-SNAPSHOT</gwtp.version>
        <guice.version>3.0</guice.version>
        <gin.version>2.1.2</gin.version>
        <gsss.version>1.0-SNAPSHOT</gsss.version>
        <gwtquery.version>1.4.3-SNAPSHOT</gwtquery.version>
        <gwt-maps-api.version>3.10.0-alpha-7</gwt-maps-api.version>
        <tooltip.version>1.1</tooltip.version>
        <appear.version>1.0-SNAPSHOT</appear.version>
        <gwtchosen.version>2.0.0-SNAPSHOT</gwtchosen.version>
        <guava.version>18.0</guava.version>
        <universal-analytics.version>2.1</universal-analytics.version>
        <velocity.version>1.7</velocity.version>
        <gwt-seo.version>0.1-SNAPSHOT</gwt-seo.version>

        <webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
        <gae.home>
            ${settings.localRepository}/com/google/appengine/appengine-java-sdk/${gae.version}/appengine-java-sdk-${gae.version}
        </gae.home>
    </properties>

    <repositories>
        <repository>
            <id>sonatype.snapshots</id>
            <name>Sonatype snapshot repository</name>
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

    <dependencies>
        <!-- Google Web Toolkit dependencies -->
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt-user</artifactId>
            <version>${gwt.version}</version>
            <scope>provided</scope>
        </dependency>

        <!-- GWT-Platform dependencies -->
        <dependency>
            <groupId>com.gwtplatform</groupId>
            <artifactId>gwtp-mvp-client</artifactId>
            <version>${gwtp.version}</version>
            <scope>provided</scope>
        </dependency>

        <!-- DI dependencies -->
        <dependency>
            <groupId>com.google.gwt.inject</groupId>
            <artifactId>gin</artifactId>
            <version>${gin.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.google.inject</groupId>
            <artifactId>guice</artifactId>
            <version>${guice.version}</version>
        </dependency>

        <!-- Other -->
        <dependency>
            <groupId>com.arcbees.seo</groupId>
            <artifactId>gwt-seo</artifactId>
            <version>${gwt-seo.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.arcbees.gss</groupId>
            <artifactId>gsss</artifactId>
            <version>${gsss.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.googlecode.gwtquery</groupId>
            <artifactId>gwtquery</artifactId>
            <version>${gwtquery.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.gwtplatform</groupId>
            <artifactId>gwtp-crawler</artifactId>
            <version>${gwtp.version}</version>
        </dependency>
        <dependency>
            <groupId>com.github.branflake2267</groupId>
            <artifactId>gwt-maps-api</artifactId>
            <version>${gwt-maps-api.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.arcbees.gquery</groupId>
            <artifactId>tooltip</artifactId>
            <version>${tooltip.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.arcbees.gquery</groupId>
            <artifactId>appear</artifactId>
            <version>${appear.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.arcbees.analytics</groupId>
            <artifactId>universal-analytics</artifactId>
            <version>${universal-analytics.version}</version>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava-gwt</artifactId>
            <version>${guava.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>${guava.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.arcbees</groupId>
            <artifactId>gwtchosen</artifactId>
            <version>${gwtchosen.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>${velocity.version}</version>
        </dependency>
    </dependencies>

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

    <build>
        <!--suppress MavenModelInspection -->
        <outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory>

        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>gwt-maven-plugin</artifactId>
                <version>${gwt-maven-plugin.version}</version>

                <configuration>
                    <module>com.arcbees.website.Arcbees</module>
                    <testTimeOut>180</testTimeOut>
                    <includes>**/*GwtTest.java</includes>
                    <mode>htmlunit</mode>

                    <extraJvmArgs>-Xss1024K -Xmx1024M -XX:MaxPermSize=512M -Duser.language=en -Duser.country=US
                    </extraJvmArgs>
                    <logLevel>INFO</logLevel>

                    <copyWebapp>true</copyWebapp>
                    <hostedWebapp>${webappDirectory}</hostedWebapp>

                    <extraParam>true</extraParam>
                    <extra>extras</extra>
                    <optimizationLevel>9</optimizationLevel>
                    <deploy>${project.build.directory}/gwtDeploy</deploy>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>resources</goal>
                            <goal>compile</goal>
                            <goal>test</goal>
                        </goals>
                    </execution>
                </executions>

            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-compiler-plugin.version}</version>
                <configuration>
                    <source>${target.jdk}</source>
                    <target>${target.jdk}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <!-- Disable annotation processors during normal compilation -->
                    <proc>none</proc>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>exploded</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <webappDirectory>${webappDirectory}</webappDirectory>
                    <webResources>
                        <resource>
                            <directory>src/main/webapp/WEB-INF</directory>
                            <filtering>true</filtering>
                            <includes>
                                <include>appengine-web.xml</include>
                            </includes>
                            <targetPath>WEB-INF</targetPath>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>

            <plugin>
                <groupId>net.kindleit</groupId>
                <artifactId>maven-gae-plugin</artifactId>
                <version>${maven-gae-plugin.version}</version>
                <dependencies>
                    <dependency>
                        <groupId>net.kindleit</groupId>
                        <artifactId>gae-runtime</artifactId>
                        <version>1.8.8</version>
                        <type>pom</type>
                    </dependency>
                </dependencies>
                <configuration>
                    <sdkDir>${gae.home}</sdkDir>
                    <serverId>appengine-credentials</serverId>
                    <splitJars>true</splitJars>
                </configuration>
                <executions>
                    <execution>
                        <id>install-server-jar</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>deploy</id>
                        <goals>
                            <goal>deploy</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>sdm</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>gwt-maven-plugin</artifactId>
                        <version>${gwt-maven-plugin.version}</version>
                        <configuration>
                            <module>com.arcbees.website.ArcbeesDev</module>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <distributionManagement>
        <repository>
            <id>local-target</id>
            <url>file://${project.build.directory}/distribution/release</url>
        </repository>
    </distributionManagement>

</project>

您的 POM 中需要的是:

  • GWT 依赖项(至少是 gwt-user,从未部署到服务器;用于 GWT-RPC 或其他服务器端支持的 gwt-servlet,类 已包含在 gwt-user 中;gwt-dev和 gwt-codeserver 是推荐的,这取决于你将使用的插件,也不要部署它们)
  • gwt-maven-插件;其中有两个:org.codehaus.mojo:gwt-maven-plugin(其版本必须与您使用的 GWT 版本匹配)和 net.ltgt.gwt.maven:gwt-maven-plugin(仍处于测试阶段;适用于任何版本的 GWT)

根据插件的不同,您将使用不同的打包和插件配置。

最后但并非最不重要的一点是,您确实应该为客户端和服务器端代码使用不同的 Maven 模块,可能还应为共享代码使用第三个模块。不过,对于一个小项目,使用单个模块就足够了(但如果您不想在服务器上部署客户端 类,则必须向 POM 添加一些配置/hack)。

对于单模块项目(同一项目中的混合客户端和服务器端代码),使用 CodeHaus Mojo 插件:

<?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>

  <groupId>com.example</groupId>
  <artifactId>test</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.google.gwt</groupId>
        <artifactId>gwt</artifactId>
        <version>2.7.0</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-user</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-dev</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-codeserver</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-servlet</artifactId>
      <scope>runtime</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>gwt-maven-plugin</artifactId>
        <version>2.7.0</version>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <module>com.example.test.Test</module>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

并使用 mvn gwt:run 到 运行 DevMode(这也会 运行 您的服务器端代码,但有一些限制)。

或者对于 net.ltgt 插件:

<?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>

  <groupId>com.example</groupId>
  <artifactId>test</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>gwt-app</packaging>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.google.gwt</groupId>
        <artifactId>gwt</artifactId>
        <version>2.7.0</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-user</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-dev</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-codeserver</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-servlet</artifactId>
      <scope>runtime</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>net.ltgt.gwt.maven</groupId>
        <artifactId>gwt-maven-plugin</artifactId>
        <version>1.0-beta-1</version>
        <extensions>true</extensions>
        <configuration>
          <moduleName>com.example.test.Test</moduleName>
          <launcherDir>${project.build.directory}/${project.build.finalName}</launcherDir>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

并使用mvn gwt:codeserver到运行 SuperDevMode(仅限客户端代码)。不过,您必须使用 jetty-maven-plugin 或 tomcat7-maven-plugin 来 运行 您的服务器端代码。


对于多模块项目,请查看我的原型:https://github.com/tbroyer/gwt-maven-archetypes 我正在将它们迁移到 net.ltgt 插件,简化您 运行 他们(不再需要 mvn installmvn gwt:codeserver 是为多模块项目设计的,与 CodeHaus Mojo 的 gwt:rungwt:run-codeserver 相反)

免责声明:我是这两个插件的维护者,但我更喜欢我自己的插件,IMO 修复了很多怪癖和错误以及 CodeHaus Mojo 的遗留问题。

使用原型

像使用任何其他 Maven 原型一样使用它来创建 template/stub 项目。

 mvn archetype:generate \
   -DarchetypeGroupId=org.codehaus.mojo \
   -DarchetypeArtifactId=gwt-maven-plugin \
   -DarchetypeVersion=2.7.0

文档: http://mojo.codehaus.org/gwt-maven-plugin/user-guide/archetype.html