有没有人有一个样本GWT 2.7.0 pom?

时间:2015-02-20 17:33:43

标签: maven gwt

我正在尝试使用Maven和GWT 2.7.0。有没有人有一个小的pom.xml模板?

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

3 个答案:

答案 0 :(得分:7)

您在POM中需要的是:

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

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

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

对于单模块项目(同一项目中的混合客户端和服务器端代码),我们使用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插件,简化了如何运行它们(无需{ {1}} mvn install已设计用于多模块项目,与CodeHaus Mojo的mvn gwt:codeservergwt:run相反

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

答案 1 :(得分:2)

使用原型

像使用任何其他Maven原型一样使用它来创建模板/存根项目。

 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

答案 2 :(得分:1)

取自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>