sof
sof

Reputation: 9649

Import project generated by gwt-maven-plugin

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.

Upvotes: 0

Views: 2713

Answers (1)

appbootup
appbootup

Reputation: 9537

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"

Upvotes: 1

Related Questions