Maven和GWT(以及Eclipse) – 它真的有用吗?

在过去的几天里,我一直在尝试使用gwt-maven-plugin在Eclipse中创建/运行一个项目,并继续遇到障碍(请参阅我之前的一些问题)。 我喜欢使用Maven来构建我的构建,但是由于使用Maven的复杂性,我正在考虑使用Ant构建路径。

有没有人配置/运行良好? 它只是我还是比它应该更难?

经过很多挫折之后,试图让事情很好地融合在一起,这就是我对我“有用”的设置。 “Works”意味着我可以通过调整来创建,运行和调试GWT项目,但它不是最优雅的解决方案。

创建项目

许多步骤与Pascal在这篇文章中的答案相同: Maven GWT 2.0和Eclipse 。 我会列出我的清楚。

在Eclipse(Helios)中安装了m2eclipse和GWT Eclipse插件:

使用gwt-maven-plugin原型创建一个新的Maven项目

修改pom.xml:

  • 设置为2.0.4(需要与GWT Eclipse插件版本相同)
  • 属性设置为1.6
  • 从gwt-maven-plugin config中删除generateAsync
  • 将maven-war-plugin添加到pom.xml

maven-war-plugin示例:

  org.apache.maven.plugins maven-war-plugin 2.0.2  war src/main/webapp/WEB-INF/web.xml   

更新项目属性:

  • Google – > Web Toolkit,选中“使用Google Web Toolkit”框,并确保选中“使用默认SDK(GWT-2.0.4)”。

在项目上运行Maven“gwt:eclipse”目标(设置环境并启动配置)

将* .launch文件复制到workspace.metadata.plugins \ org.eclipse.debug.core.launches

重启Eclipse

编译/运行项目

我创建了一个运行配置,它执行mvn clean compile gwt:run 。 gwt:run是将资源和lib jar复制到war目录中所必需的。 但是,它不会将web.xml从src / main / webapp / WEB-INF复制到war / WEB-INF /中。 所以,我必须手动复制该文件。

如果我想运行我的应用程序,上面的步骤就足够了。 但是,如果我想调试应用程序,我会通过从先前复制.launch文件时创建的调试配置中选择Google“Web应用程序”配置来启动它。 此配置允许调试(断点等),无需任何其他配置或需要远程调试。

它应该更难,但它是可能的。 这里发布的所有提示都可以解决问题。 但是,您仍然可以遇到类加载问题。 我决定切换到GWT 2.1并使用JettyLauncher的新function。 您可以像这样创建自己的jetty启动器:

 public class MyJettyLauncher extends com.google.gwt.dev.shell.jetty.JettyLauncher { @Override protected WebAppContext createWebAppContext(TreeLogger logger, File appRootDir) { return new WebAppContext(appRootDir.getAbsolutePath(), "/"); } } 

然后在您的gwt启动器配置中添加-server MyJettyLauncher选项。 使用这样的配置,所有库都由m2eclipse管理(您甚至可以从类路径中删除GWT SDK)并且不需要将任何内容复制到WEB-INF/lib (您可以删除已经存在的gwt-servlet.jar )。

Ready启动器位于tadedon库中: http : //code.google.com/p/tadedon/source/browse/tadedon-gwt-dev/src/main/java/com/xemantic/tadedon/gwt/dev/JettyLauncher。 java的

是的,在2016年确实如此。 🙂

我从Eclipse中启动Tomcat,从Eclipse启动GWT代码服务器(SuperDev模式),我从Eclipse启动Chrome。

您将在Brandon Donnelson的 YouTube频道找到最新且非常有价值的设置教程 : https : //www.youtube.com/user/branflake2267/videos

对我来说最重要的是用于GWT SuperDevMode的Eclipse调试器 : https : //sdbg.github.io/

我更喜欢将我的项目“mavenized”,并且Brandon也提供了很多Maven原型 : https : //github.com/branflake2267/Archetypes/tree/master/archetypes

下载GPE插件(不要与上述调试器插件混淆)的官方起点(不仅仅是)在GwtProject.com上 : http : //www.gwtproject.org/download.html
对我个人而言,GPE本身已成为相当可选的“便利”组件。 (是的,重构和自动完成很不错,但这就是它所需要的全部。:)

它不是一键式解决方案,我更喜欢它,因为那些往往是黑盒子容易破碎。

BTW请务必查看GWT材料 : http : //gwtmaterialdesign.github.io/gwt-material-demo/

(目前正在使用2.8-beta1。)

对于Eclipse,我使用:m2eclipse插件(1.0)。 它适用于一两件小事。 还可以下载m2eclipse-extras插件以添加SVNfunction和Maven(如果您愿意,还可以添加CVS)。

当你下载然后你的项目它会读取pom.xml并[re]创建Eclipse配置文件,如mvn eclipse:eclipse命令。

对于GWT ……我也用过它。 这是一个非常复杂的配置,但它的工作原理。 我使用GWT 2.0.3,maven-gwt-plugin使用依赖项工作(没有参考GWT SDK),它可以从Eclipse调试,这简直太棒了。

您必须编译到war目录(而不是目标/类标准)。 但细节是在我的工作,所以让我明天看到它并完成这个答案:)不要放弃。 拥有GWT + Eclipse + Maven是件好事。

编辑 :我的配置的一部分

 ... war/WEB-INF/classes ...   org.codehaus.mojo gwt-maven-plugin 1.2  ${gwt.version}  true true /subscriber/listSubscribers.htm ${basedir}/war true     compile test       org.mortbay.jetty maven-jetty-plugin 6.1.14   /magazine   ${basedir}/src/main/webapp, ${basedir}/war      8888 60000   3  ${basedir}/war    

为了调试,我创建了两个任务:

1)maven在eclipse中构建,运行两个目标: war:exploded gwt:debug

  • 第一个将所有资源复制到war目录中以供gwt调试使用它们。
  • 接下来gwt准备好了。

也许你需要第一次执行gwt:compile

2)选择项目的Java远程应用程序调试配置。

当gwt:debug“正在侦听端口8000”时运行此配置

AND :这是在父pom.xml中(对不起,我稍后会编辑这篇文章:)

   org.apache.maven.plugins maven-war-plugin 2.1-alpha-2  ${basedir}/src/main/webapp ${basedir}/war ${artifactId}   

赫利奥斯写了很好的解释。 但目前还不是实际的。 因此,我建议您尝试在GlassFish上运行的EAR应用程序的现代示例,并提供完整的调试支持 。