web-dev-qa-db-fra.com

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 utilisant maven et eclipse? Je rencontre beaucoup de problèmes pour les amener à bien jouer ensemble.

Pour ce que ça vaut, je peux créer un projet gwt en utilisant le plugin maven Eclipse qui fonctionne très bien, mais le porter sur 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 lorsque je l'importe dans Eclipse (import -> matérialiser des projets maven), il n'est pas reconnu comme un projet GWT ...

Merci

52
Lehane

EDIT: J'ai mis à jour ma réponse avec des étapes supplémentaires fournies par l'OP. Crédits à 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 conditions préalables suivantes sont remplies:

Avez-vous essayé de:

  1. Créez un nouveau projet depuis Eclipse ( Nouveau> Autre ... puis sélectionnez Maven Project et choisissez le gwt-maven-plugin archétype).

  2. Modifiez le pom.xml Généré, mettez à jour la propriété gwt.version En 2.0.0 (Qui a été publiée dans le référentiel central), ajouter le référentiel Codehaus Snapshot et définissez la version gwt-maven-plugin sur 1.2-SNAPSHOT (La version 1.2 n'est pas publiée dans le central, cela devrait arriver bientôt) 1.2 (Qui a également été publié dans le centre).

  3. Ajoutez un <runTarget> À la configuration du plugin gwt-maven comme indiqué dans tilisation du plugin Google Eclipse .

  4. Configurez le plug-in maven-war comme indiqué dans la page mentionnée à l'étape précédente.

  5. Activez manuellement GWT sur le projet à partir des préférences du projet en cochant la case Utiliser Google Web Toolkit Cette étape est inutile car vous allez créer/exécuter avec une configuration d'exécution Maven, pas le plugin GWT pour Eclipse.

Voici à quoi ressemble mon 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/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écutez l'objectif gwt:Eclipse (En utilisant m2Eclipse Maven2> build ...) pour configurer votre environnement et créer la configuration de lancement pour vos modules GWT.

Exécutez gwt:compile gwt:run Pour compiler et exécuter un module GWT en mode hébergé GWT.

42
Pascal Thivent

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

webAppCreator -maven -noant -out

Pour plus d'informations:

Gappeur Web GWT créant un projet Maven: la pièce jointe source ne contient pas la source du fichier URLClassPath.class

3
chenglee

Au cas où. Si vous utilisez Google GIN dans votre projet, vous devez ajouter l'objectif de compilation 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

1
user260554

Un problème ennuyeux avec GWT et m2Eclipse:

Le mode de développement GWT nécessite que tous les fichiers JAR soient placés dans WEB-INF/lib. C'est particulièrement pénible lorsque les programmeurs utilisent m2Eclipse, qui fournit son propre conteneur de chemin de classe Eclipse.

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

bonne nouvelle, la solution de contournement fonctionne pour moi

1
Fred Close

fil très utile

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

J'avais besoin de 2.5.1 GWT (pas 2.6, la dernière) pour travailler avec maven et Eclipse (car sencha GXT n'est pas encore supporté pour 2.6). Essayé de suivre sans chance

1) essayé quelques archétypes avec 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

La suite 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
0
kashili kashili