Próbuję użyć Mavena z GWT 2.7.0. Czy ktoś ma mały szablon pom.xml?Czy ktoś ma próbkę GWT 2.7.0 pom?
Jestem szczególnie patrząc na czyste/install/mb (użyłem GWT: Uruchom w poprzednim projekcie) ...
Próbuję użyć Mavena z GWT 2.7.0. Czy ktoś ma mały szablon pom.xml?Czy ktoś ma próbkę GWT 2.7.0 pom?
Jestem szczególnie patrząc na czyste/install/mb (użyłem GWT: Uruchom w poprzednim projekcie) ...
Co trzeba w POM jest:
org.codehaus.mojo:gwt-maven-plugin
(którego wersja musi pasować do wersji GWT używasz) i net.ltgt.gwt.maven:gwt-maven-plugin
(jeszcze w fazie beta, współpracuje z każdą wersją GWT)zależności od wtyczki, można użyć różne konfiguracje opakowań i wtyczek.
Wreszcie, należy użyć odrębnych modułów Maven dla kodu po stronie klienta i serwera oraz ewentualnie trzeciego modułu dla wspólnego kodu. W przypadku małego projektu może jednak wystarczyć użycie pojedynczego modułu (ale nie musisz dodawać konfiguracji/hacków do POM, jeśli nie chcesz wdrażać klas po stronie klienta na serwerze).
To daje nam na projekt pojedynczego modułu (mieszany i klient-kodu po stronie serwera w tym samym projekcie), z wtyczką 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>
I używać mvn gwt:run
uruchomić DEVMODE (co uruchomi również twój kod po stronie serwera, z pewnymi ograniczeniami).
Lub plugin 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
I użyć do uruchomienia SuperDevMode (tylko kod po stronie klienta). Będziesz jednak musiał użyć wtyczki jetty-maven-plugin lub tomcat7-maven-plugin, aby uruchomić kod po stronie serwera.
Dla projektu wielomodułowego, rzucić okiem na moje archetypów: https://github.com/tbroyer/gwt-maven-archetypes jestem w trakcie przenoszenia ich do wtyczki net.ltgt, upraszczając jak będziesz je uruchomić (nie trzeba mvn install
więcej; mvn gwt:codeserver
został zaprojektowany dla wielu projektów modułowych, wbrew CodeHaus Mojo gwt:run
i gwt:run-codeserver
)
Disclaimer: Jestem opiekunem dla obu wtyczek, ale chcę faworyzować własne wtyczki, która rozwiązuje wiele IMO o dziwactwach i błędach i dziedzictwie CodeHaus Mojo.
zaczerpnięte z 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>
Korzystanie archetypu
używać go tak jak każdy inny archetyp Maven utworzyć projekt szablon/skrótowe.
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
Dzięki Thomas, jednak jestem nieco zagubiony: com.example.test.Test . Czy powinna to być "ścieżka" do pliku gwt.xml? –
jgp
Tak: kropkowana nazwa pakietu + nazwa pliku bez rozszerzenia (uwaga: to ** nie ** ścieżka do systemu plików!) –