Does anyone have a GWT 2.7.0 pom sample?

I am trying to use Maven with GWT 2.7.0. Does anyone have a small pom.xml template?

I especially look at clean / install / running (I used gwt: launched in a previous project) ...

+7
maven gwt
source share
3 answers

What you need in your POM:

  • GWT dependencies (at least a gwt user is never deployed to a server; a gwt servlet for GWT-RPC or other server-side support, classes already included in gwt-user; gwt-dev and gwt-codeserver are recommended, it depends the plugin you will use, never deploy them).
  • GWT-Maven plugin; there are two of them: org.codehaus.mojo:gwt-maven-plugin (which version should match the version of GWT you are using) and net.ltgt.gwt.maven:gwt-maven-plugin (still in beta; works with any version of GWT)

Depending on the plugin, you will use a different packaging and plugin configuration.

Last but not least, you really need to use different Maven modules for client and server code, and also, possibly, a third module for general code. However, for a small project, using one module may be enough (but you will have to add some settings / hacks to your POM if you do not want to deploy your client classes on your server).

This gives us for a single-module project (mixed client and server code in one project) with the CodeHaus Mojo plugin:

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

And use mvn gwt:run to run DevMode (which will also run your server code with some limitations).

Or for the net.ltgt plugin:

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

And use mvn gwt:codeserver to run SuperDevMode (client-side code only). You will have to use the plugty-maven-plugin or tomcat7-maven-plugin to run your server code.


For a multi-module project, take a look at my archetypes: https://github.com/tbroyer/gwt-maven-archetypes I transfer them to net.ltgt, simplifying the process of launching them (no longer need mvn install ; mvn gwt:codeserver was designed for multi-module projects, unlike CodeHaus Mojo gwt:run and gwt:run-codeserver )

Disclaimer: I am a supporter of both plugins, but I would approve of my own plugin, which IMO fixes a lot of quirks and errors and the legacy of CodeHaus Mojo.

+7
source share

Using archetype

Use it like any other Maven archetype to create a template / stub project.

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

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

+2
source share

Taken from 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> 
+1
source share

All Articles