net.ltgt.gwt.maven和org.codehaus.mojo GWT Maven插件有什么区别?

时间:2016-06-19 18:17:06

标签: java maven gwt gwt-maven-plugin

显然,GWT有两个maven插件:

这一个:

StrConv

和这一个:

<groupId>net.ltgt.gwt.maven</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>1.0-rc-6</version>

有什么区别?

1 个答案:

答案 0 :(得分:10)

免责声明:我是org.codehaus.mojo插件的前维护者,也是net.ltgt.gwt.maven插件的作者。

插件与使用Maven的GWT有很多不同的方法;我将尝试总结一下这里最重要的一些。

首先,org.codehaus.mojo与GWT的特定版本相关联;这意味着每当发布新版本的GWT以解决差异时,都必须发布新版本的插件。另一方面,它使用Maven文档(mvn gwt:help)等公开所有GWT选项/标记作为配置属性。当插件中修复了一个错误时,这也意味着您必须更新您的GWT版本以匹配下一个插件版本使用的版本;虽然你真的应该总是使用最新的GWT版本,但是由于其他依赖项与新版本等不兼容,可能无法快速更新,因此您可能处于“版本冲突地狱”中。 net.ltgt.gwt.maven插件旨在与2个最新版本的GWT兼容,但可能与更多版本兼容(它只是没有经过测试/保证);这意味着您可以独立于GWT更新插件 org.codehaus.mojo插件会带来gwt-devgwt-user(以及gwt-servlet!)依赖项,如果不是严格相同的话,可能会导致与项目依赖项的冲突发生冲突;另外,由于Maven的工作原理,如果您在不同的groupId下使用自己的GWT分叉版本,则不能将它们从插件的依赖项中排除(您必须使用com.google.gwt {{1或者,插入插件来改变它的依赖性。)

groupId插件附带net.ltgt.gwt.mavenpackaging的自定义gwt-lib。关于如何使用Maven完成GWT应用程序是非常自以为是:将客户端和服务器(和共享)代码分离到单独的Maven模块中(这实际上遵循Maven Way™:如果您需要单独的类路径,那么您需要使用不同的Maven模块,每个都有他们的依赖)。您当然不会被迫使用这些包装,他们只是通过设置适当的默认值和约定来在POM中削减相当多的配置。

最后,由于上述关于“项目布局”的观点,gwt-app插件旨在支持多模块(又名反应堆)构建,与net.ltgt.gwt.maven插件相反,例如,org.codehaus.mojo必须在客户端和服务器代码“生存”的项目上运行;在多模块构建中导致可怕的黑客攻击,例如必须gwt:run所有依赖模块(因为无法在聚合器模块上调用mvn install)并使用gwt:run从客户端源引入其他模块可实现无缝开发体验。

你可以看到this commit上gwt-maven-archetypes(免责声明:我是作者)的插件之间的差异从build-helper-maven-plugin切换到org.codehaus.mojo插件。

相关问题