有人有示例 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 install
;mvn gwt:codeserver
是为多模块项目设计的,与 CodeHaus Mojo 的 gwt:run
和 gwt: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
我正在尝试将 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 install
;mvn gwt:codeserver
是为多模块项目设计的,与 CodeHaus Mojo 的 gwt:run
和 gwt: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