我首先通过执行 -
生成了一个gwt maven项目mvn archetype:generate -DarchetypeGroupId = org.codehaus.mojo -DarchetypeArtifactId = gwt-maven-plugin -DarchetypeVersion = 2.7.0
之后,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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.boye.games</groupId>
<artifactId>games-gwt</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>GWT Maven Archetype</name>
<properties>
<!-- Convenience property to set the GWT version -->
<gwtVersion>2.7.0</gwtVersion>
<!-- GWT needs at least java 1.6 -->
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt</artifactId>
<version>${gwtVersion}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-servlet</artifactId>
<scope>runtime</scope>
</dependency>
<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>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<!-- Output classes directly into the webapp, so that IDEs and "mvn process-classes" update them in DevMode -->
<outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
<plugins>
<!-- GWT Maven Plugin -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>2.7.0</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test</goal>
<goal>generateAsync</goal>
</goals>
</execution>
</executions>
<!-- Plugin configuration. There are many available options, see
gwt-maven-plugin documentation at codehaus.org -->
<configuration>
<runTarget>LineThree.html</runTarget>
<modules>
<module>com.boye.games.linethree.LineThree</module>
</modules>
</configuration>
</plugin>
</plugins>
</build>
</project>
然后我通过内置的eclipse函数将这个项目导入eclipse - 导入现有的Maven项目。
然而,由于以下几个原因,该过程失败了:
GreetingServiceAsync
无法解析为org.codehaus.mojo:gwt-maven-plugin:2.7.0:generateAsync
的执行默认值失败:插件org.codehaus.mojo:gwt-maven-plugin:2.7.0或其中一个 无法解析依赖项:无法收集依赖项 org.codehaus.mojo:gwt-maven-plugin:jar:2.7.0() (org.codehaus.mojo:GWT-行家-插件:2.7.0:generateAsync:默认:产生来源)
我的环境如下:
请提出建议,非常感谢!
答案 0 :(得分:1)
问题在于generateAsync,在您的情况下会在执行时生成GreetingServiceAsync。 Eclipse可能没有配置为正确处理它,并且没有生成此类,并且eclipse报告了缺少的类警告。
让项目工作可以做的另一件事是从命令行运行mvn包并在eclipse中将生成的dir作为源dir添加到目标dir中(右键单击项目并选择New - &gt; source folder &gt;浏览文件夹名称&gt;目标&gt; generated-sources&gt;正确的文件夹)
此外,在执行mvn clean后可能会遇到同样的问题 - 生成的GreetingServiceAsync将被删除,问题可能会再次出现。
问题的存在是因为eclipse没有与maven紧密集成,并使用自己的构建系统忽略了你没有插件的maven目标。你能做的就是打开eclipse首选项&gt; maven&gt;生命周期映射,您可以在其中启用generateAsync来执行。
如果您手动复制生成的类,则必须记住,您需要在需要时更新它,因为它是自动生成的。所以你放松了这个便利。
答案 1 :(得分:1)
我再尝试尝试使用win32计算机,即使我在win64计算机上设置了上述环境,也会重新出现问题。
所以我真的很困惑,就像Klarki说的那样,我必须做一些调整才能让它发挥作用。我通过mvn gwt生成GreetingServiceAsync:generateAsync然后手动将GreetingServiceAsync复制到源文件夹,然后我在pom.xml中删除<goal>generateAsync</goal>
,然后通过eclipse的现有maven项目导入项目。它又有效了!
遗憾地看到它不能聪明地工作。
答案 2 :(得分:1)
这项工作对我来说:
我在Windows 7中删除了本地maven gwt存储库,它位于C:\ Users \ .m2 \ repository \ com \ google \ gwt中,然后创建
mvn clean complile
所以maven重新导入al dependencys。
答案 3 :(得分:0)
我改变了我的环境后如下:
我的工作就像一个魅力。
可能是版本不兼容问题。