Reputation: 2091
I am trying to use Maven with GWT 2.7.0. Does anyone have a small pom.xml template?
I am particularly looking at clean / install / running (I used gwt:run in a previous project)...
Upvotes: 8
Views: 7643
Reputation: 81
Using the Archetype
Use it as you would 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
Upvotes: 2
Reputation: 64541
What you need in your POM is:
org.codehaus.mojo:gwt-maven-plugin
(whose version must match the version GWT you're using), and net.ltgt.gwt.maven:gwt-maven-plugin
(still in beta; works with any version of GWT)Depending on the plugin, you'll use different packaging and plugin configuration.
Last, but not least, you really should use distinct Maven modules for client and server side code, plus possibly a third module for shared code. For a small project though, using a single module could be enough (but you'll have to add some configuration / hacks to your POM if you don't want to deploy your client-side classes on your server).
That gives us, for a single-module project (mixed client- and server-side code in the same 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-side 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'll have to use the jetty-maven-plugin or tomcat7-maven-plugin to run your server-side code though.
For a multi-module project, have a look at my archetypes: https://github.com/tbroyer/gwt-maven-archetypes I'm in the process of migrating them to the net.ltgt plugin, simplifying how you'll run them (no need to mvn install
anymore; mvn gwt:codeserver
has been designed for multi-module projects, contrary to CodeHaus Mojo's gwt:run
and gwt:run-codeserver
)
Disclaimer: I'm the maintainer for both plugins, but I'd favor my own plugin, which IMO fixes a lot of quirks and mistakes and legacy of the CodeHaus Mojo one.
Upvotes: 8
Reputation: 9837
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>
Upvotes: 2