0

i followed the instruction of gwt-maven-plugin, generated then imported the project below,

1) Generate the project

$ mvn archetype:generate \
   -DarchetypeGroupId=org.codehaus.mojo \
   -DarchetypeArtifactId=gwt-maven-plugin \
   -DarchetypeVersion=2.5.0

...

Define value for property 'groupId': : org.codehaus.mojo
Define value for property 'artifactId': : gwt-maven-plugin-sample
Define value for property 'version':  1.0-SNAPSHOT: : 
Define value for property 'package':  org.codehaus.mojo: : 
Define value for property 'module': : Sample 

...

2) Check the generated POM

<?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">

  <!-- POM file generated with GWT webAppCreator -->
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>gwt-maven-plugin-sample</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>GWT Maven Archetype</name>

  <properties>
    <!-- Convenience property to set the GWT version -->
    <gwtVersion>2.5.0</gwtVersion>
    <!-- GWT needs at least java 1.5 -->
    <webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-servlet</artifactId>
      <version>${gwtVersion}</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-user</artifactId>
      <version>${gwtVersion}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.7</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>javax.validation</groupId>
      <artifactId>validation-api</artifactId>
      <version>1.0.0.GA</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>javax.validation</groupId>
      <artifactId>validation-api</artifactId>
      <version>1.0.0.GA</version>
      <classifier>sources</classifier>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <!-- Generate compiled stuff in the folder used for developing mode -->
    <outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory>

    <plugins>

      <!-- GWT Maven Plugin -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>gwt-maven-plugin</artifactId>
        <version>2.5.0</version>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>test</goal>
              <goal>i18n</goal>
              <goal>generateAsync</goal>
            </goals>
          </execution>
        </executions>
        <!-- Plugin configuration. There are many available options, see 
          gwt-maven-plugin documentation at codehaus.org -->
        <configuration>
          <runTarget>Sample.html</runTarget>
          <hostedWebapp>${webappDirectory}</hostedWebapp>
          <i18nMessagesBundle>org.codehaus.mojo.client.Messages</i18nMessagesBundle>
        </configuration>
      </plugin>

      <!-- Copy static web files before executing gwt:run -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.1.1</version>
        <executions>
          <execution>
            <phase>compile</phase>
            <goals>
              <goal>exploded</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <webappDirectory>${webappDirectory}</webappDirectory>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

3) Check the generated project

gwt-maven-plugin-sample/
├── .classpath
├── pom.xml
├── .project
├── SampleTest-dev.launch
├── SampleTest-prod.launch
├── .settings
│   ├── com.google.appengine.eclipse.core.prefs
│   ├── com.google.gdt.eclipse.core.prefs
│   ├── com.google.gwt.eclipse.core.prefs
│   ├── .jsdtscope
│   ├── org.eclipse.jdt.core.prefs
│   ├── org.eclipse.wst.common.component
│   ├── org.eclipse.wst.common.project.facet.core.xml
│   ├── org.eclipse.wst.jsdt.ui.superType.container
│   └── org.maven.ide.eclipse.prefs
├── src
│   ├── main
│   │   ├── java
│   │   │   └── org
│   │   │       └── codehaus
│   │   │           └── mojo
│   │   │               ├── client
│   │   │               │   ├── GreetingService.java
│   │   │               │   └── Sample.java
│   │   │               ├── server
│   │   │               │   └── GreetingServiceImpl.java
│   │   │               └── shared
│   │   │                   └── FieldVerifier.java
│   │   ├── resources
│   │   │   └── org
│   │   │       └── codehaus
│   │   │           └── mojo
│   │   │               ├── client
│   │   │               │   ├── Messages_fr.properties
│   │   │               │   └── Messages.properties
│   │   │               └── Sample.gwt.xml
│   │   └── webapp
│   │       ├── Sample.css
│   │       ├── Sample.html
│   │       └── WEB-INF
│   │           └── web.xml
│   └── test
│       ├── java
│       │   └── org
│       │       └── codehaus
│       │           └── mojo
│       │               └── client
│       │                   └── GwtTestSample.java
│       └── resources
│           └── org
│               └── codehaus
│                   └── mojo
│                       └── SampleJUnit.gwt.xml
└── target
    └── generated-sources
        └── gwt
            └── org
                └── codehaus
                    └── mojo

33 directories, 26 files

4) On Eclipse, choose "Import Existing Project to Workspace"

imported eclipse project

5) According to the instruction of gwt-maven-plugin, the imported project should have resulted in the project structure similar to below,

expected eclipse project

In the end by our comparing 4) to 5), the problem in sight seems that no maven dependencies were added by the import at all, in other words, the generated project was not validated as a maven project. So, what's wrong with the steps above and the configuration below?

gwt-maven-plugin 2.5.0
m2e 1.2.0.20120903-1050
eclipse 3.7.2
maven 3.0.4

@EDIT

Ran "mvn gwt:run" successfully, but failed to launch DevMode by GWT Eclipse Plugin,

gwt devmode error

@EDIT 2

Referring to the link from @Sachin Shekhar R, i've looked into the official GWT Wiki: working with maven, followed the instruction and tested DynaTable RequestFactory sample. Great, it does work!

Unfortunately, the Wiki echoes that gwt-maven-plugin does have issues with the archetype in use.

sof
  • 9,113
  • 16
  • 57
  • 83
  • Can you post what error you are facing along with error log or screenshot. Example - Maven compilation failed or devmode launch failed? – appbootup Nov 30 '12 at 10:31
  • Thx, pls check the error above. The obvious problem to me is no maven dependencies added by the import at all. – sof Nov 30 '12 at 10:44
  • Well as the error states, is the `gwt-servlet.jar` on the classpath? Also, GWT-2.0.4 is ancient, you should upgrade to 2.5. – Anders R. Bystrup Nov 30 '12 at 10:47
  • @Anders R. Bystrup, dependency management is supposed the job of `gwt-maven-plugin` and `m2e`. – sof Nov 30 '12 at 10:51
  • I know that, still you're getting that error, right? In any case, you have a dep on 2.0.4 and your GWT plugin version is 2.5.0 - that's where you should look. Is the project actually a GWT product in Eclipse's eyes? – Anders R. Bystrup Nov 30 '12 at 10:58
  • GPE launch in maven peoject is able to pick up from target\\WEB-INF\lib\gwt-servlet.jar . @sof - Point your GPE to GWT 2.5 as per Anders suggestion and then do mvn clean install and try again. – appbootup Nov 30 '12 at 11:06
  • I'd like to see if `gwt-maven-plugin` together with `m2e` works out of box as supposed to do. Manual hack on the problem brings no added value on their own. Thanks anyhow. – sof Nov 30 '12 at 11:30

1 Answers1

1

gwt-maven-plugin 2.5.0 works best with GWT 2.5.0. The statement Ran "mvn gwt:run" successfully, but failed to launch DevMode by GWT Eclipse Plugin is a bit confusing.

I also noticed that in your case -

1) The generated pom file in indicates 2.5.0 and eclipse screenshot indicates 2.0.4. This might because your GPE is pointing to GWT 2.0.4 and overriding the pom files directive.

2) If you are using maven gwt:run then GWT Eclipse Plugin is irrelevant. The dev mode gets launched either by

  • a) mvn gwt:run
  • b) by GWT Eclipse Plugin when you right click on project and select Debug As -> Web Application

3) Maven dependencies are being shown in the screenshot you have shared. Can you expand it and verify which jars are being picked up.

Edit - You can try some additional troubleshooting tips from with http://code.google.com/p/google-web-toolkit/wiki/WorkingWithMaven

My guess would be the configuration @ Project properties, Google > Web Application, the "This project has a WAR directory"

appbootup
  • 9,537
  • 3
  • 33
  • 65
  • Sorry for something obscure. The pointer to GWT 2.0.4 from the picture on 5) above is not the result of my import (it's on 4), but the outdated description by `gwt-maven-plugin`. The correct GWT version is 2.5.0 as you guess. `mvn gwt:run` works via CLI, but `Run as -> Web App` fails via GPE. i need the latter to work, too. – sof Nov 30 '12 at 15:35
  • Thanks for the link to this `GWT Wiki`. – sof Nov 30 '12 at 20:45