2015-02-20 8 views

Odpowiedz

7

Co trzeba w POM jest:

  • GWT zależności (GWT-user, przynajmniej nigdy wdrożony do serwera; gwt-serwletu dla GWT-RPC lub innego rodzaju wsparcia po stronie serwera, zajęcia już uwzględnione w gwt użytkownika; GWT -dev i gwt-codeserver są zalecane, zależy to od wtyczki, której będziesz używać, ale nigdy nie wdrażaj ich).
  • gwt-maven-plugin; istnieją dwa z nich: 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.

+0

Dzięki Thomas, jednak jestem nieco zagubiony: com.example.test.Test. Czy powinna to być "ścieżka" do pliku gwt.xml? – jgp

+0

Tak: kropkowana nazwa pakietu + nazwa pliku bez rozszerzenia (uwaga: to ** nie ** ścieżka do systemu plików!) –

1

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>