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应用程序的现代示例,并提供完整的调试支持 。