52 votes

Maven GWT 2.0 et Eclipse

Quelqu'un connaît-il un bon guide pour créer un projet avec la nouvelle version 2.0 de GWT en utilisant maven et eclipse ? Je rencontre beaucoup de problèmes pour les faire fonctionner ensemble.

Pour ce que ça vaut, je peux créer un projet gwt en utilisant le plugin eclipse maven qui fonctionne bien, mais le porter vers maven ne fonctionne pas (donc un guide pour cela serait génial).

De même, je peux utiliser le plugin maven (gwt-maven-plugin), mais quand je l'importe dans eclipse (import -> materialize maven projects), il n'est pas reconnu comme un projet GWT...

Merci

42voto

Pascal Thivent Points 295221

EDITAR: J'ai mis à jour ma réponse avec les étapes supplémentaires fournies par le PO. Merci à l'OP pour les détails.

Je viens de casser ma configuration Eclipse en essayant d'installer la dernière version du Plugin Google pour Eclipse (pour GWT 2.0) donc je ne peux pas tout confirmer mais, supposons que les pré-requis suivants sont remplis :

Avez-vous essayé :

  1. Créez un nouveau projet à partir d'Eclipse ( Nouveau > Autres... puis sélectionnez Projet Maven et choisissez le gwt-maven-plugin archétype).

  2. Modifiez le fichier généré pom.xml , mettre à jour le gwt.version à la propriété 2.0.0 (qui a été publié dans le dépôt central), ajouter le Aperçu de Codehaus dépôt et définir les gwt-maven-plugin version à 1.2-SNAPSHOT (la version 1.2 n'est pas encore sortie en central, cela devrait arriver bientôt) 1.2 (qui est également sorti en central).

  3. Ajouter un <runTarget> à la configuration de gwt-maven-plugin comme documenté dans Utilisation du plugin Google Eclipse .

  4. Configurez le maven-war-plugin comme documenté dans la page mentionnée dans l'étape précédente.

  5. Activez manuellement GWT sur le projet depuis les préférences du projet en définissant l'option Utilisez la boîte à outils Google Web case à cocher Cette étape n'est pas nécessaire puisque vous allez construire/exécuter avec une configuration d'exécution Maven, pas le plugin GWT pour Eclipse.

C'est ainsi que mon pom.xml ressemble en fait à :

<?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/maven-v4_0_0.xsd">
  <!--
    GWT-Maven archetype generated POM
  -->
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.demo</groupId>
  <artifactId>my-gwtapp</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>gwt-maven-archetype-project</name>

  <properties>

      <!-- convenience to define GWT version in one place -->
      <gwt.version>2.0.0</gwt.version>

      <!--  tell the compiler we can use 1.5 -->
      <maven.compiler.source>1.5</maven.compiler.source>
      <maven.compiler.target>1.5</maven.compiler.target>

  </properties>

  <dependencies>

    <!--  GWT dependencies (from central repo) -->
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-servlet</artifactId>
      <version>${gwt.version}</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-user</artifactId>
      <version>${gwt.version}</version>
      <scope>provided</scope>
    </dependency>

    <!-- test -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.4</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <outputDirectory>war/WEB-INF/classes</outputDirectory>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>gwt-maven-plugin</artifactId>
        <version>1.2</version>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>generateAsync</goal>
              <goal>test</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <runTarget>com.mycompany.demo.gwt.Application/Application.html</runTarget>
        </configuration>
      </plugin>
      <!--
          If you want to use the target/web.xml file mergewebxml produces,
          tell the war plugin to use it.
          Also, exclude what you want from the final artifact here.
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webXml>target/web.xml</webXml>
                    <warSourceExcludes>.gwt-tmp/**</warSourceExcludes>
                </configuration>
            </plugin>
            -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.0.2</version>
        <configuration>
          <warSourceDirectory>war</warSourceDirectory>
          <webXml>src/main/webapp/WEB-INF/web.xml</webXml>
        </configuration>
      </plugin>    
    </plugins>
  </build>

</project>

Exécuter le gwt:eclipse (en utilisant m2eclipse Maven2 > build...) pour configurer votre environnement et créer la configuration de lancement pour vos modules GWT.

Exécuter gwt:compile gwt:run pour compiler et exécuter un module GWT dans le mode GWT Hosted.

3voto

chenglee Points 33

Vous pouvez exécuter la commande suivante pour générer un projet Maven GWT :

webAppCreator -maven -noant -out

Pour plus d'informations :

GWT webappcreator crée un projet Maven : la source jointe ne contient pas la source du fichier URLClassPath.class

1voto

Juste au cas où. Si vous utilisez Google GIN dans votre projet, vous devez ajouter compiler objectif avant gwt:compile . Donc la séquence entière serait :

compile gwt:compile gwt:run

Vous pouvez lire l'explication ici : http://code.google.com/p/google-gin/wiki/GinTutorial#Compilation

1voto

Fred Close Points 11

Un problème ennuyeux avec GWT et m2eclipse :

Le mode de développement GWT exige que tous les JARs soient placés dans WEB-INF/lib. C'est particulièrement pénible lorsque les programmeurs utilisent m2eclipse, qui fournit son propre conteneur de classpath Eclipse.

http://code.google.com/p/google-web-toolkit/issues/detail?id=5693

Bonne nouvelle, la solution de contournement fonctionne pour moi.

0voto

kashili kashili Points 91

Fil très utile

@Pascal : merci (je n'ai pas assez de réputation pour commenter les posts des autres ; donc ici je poste sur ce qui marche pour moi).

J'avais besoin de GWT 2.5.1 (pas 2.6, la dernière version) fonctionnant avec maven et eclipse (parce que sencha GXT n'est pas encore supporté pour 2.6). J'ai essayé ce qui suit sans succès

1) J'ai essayé quelques archétypes dans Eclipse pour générer le projet.

2)modifier le fichier pom (basé sur la discussion ci-dessus) pour changer les versions en 2.5.1

Ce qui suit a fonctionné pour moi http://mojo.codehaus.org/gwt-maven-plugin/user-guide/archetype.html

 mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo -DarchetypeArtifactId=gwt-maven-plugin -DarchetypeVersion=2.5.1
 mvn gwt:eclipse
 mvn gwt:run

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X