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

标签 java maven gwt gwt-maven-plugin

显然,GWT 有两个 maven 插件:

这个:

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

还有这个:

<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>2.8.0-SNAPSHOT</version>

有什么区别?

最佳答案

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

这些插件使用 GWT 和 Maven 的方法非常不同;我将尝试在此处总结最重要的内容。

首先,org.codehaus.mojo 绑定(bind)到特定版本的 GWT;这意味着每当发布新版本的 GWT 时都必须发布新版本的插件以解决差异。另一方面,它通过 Maven 文档 (mvn gwt:help) 等公开所有 GWT 选项/标志作为配置属性。当插件中的错误被修复时,这也意味着您必须更新 GWT 版本以匹配下一个插件版本使用的版本;虽然您确实应该始终使用最新的 GWT 版本,但由于其他依赖项与新版本不兼容等原因,可能无法快速更新,因此您可能陷入“版本冲突 hell ”。
net.ltgt.gwt.maven 插件旨在与 GWT 的 2 个最新版本兼容,但可能与更多版本兼容(只是未经测试/保证);这意味着您可以独立于 GWT 更新插件。
org.codehaus.mojo 插件带来了 gwt-devgwt-user(以及 gwt-servlet! ) 依赖项,如果不完全相同,可能会导致与项目依赖项的冲突;此外,由于 Maven 的工作方式,如果您在不同的 groupId 下使用自己的 GWT 分支版本(您必须使用 com. google.gwt groupId,或者 fork 插件来改变它的依赖)。

net.ltgt.gwt.maven 插件带有用于 gwt-libgwt-app< 的自定义 packaging/。关于 GWT 应用程序应该如何使用 Maven 完成的观点非常固执:将客户端和服务器(和共享)代码分离到单独的 Maven 模块中(这实际上遵循 The Maven Way™:如果您需要单独的类路径,那么您需要使用不同的 Maven 模块,每个都有它们的依赖关系)。您当然不会被迫使用这些包装,它们只是通过设置适当的默认值和约定来减少 POM 中的大量配置。

最后,由于上述关于“项目布局”的自以为是的观点,net.ltgt.gwt.maven 插件被设计为支持多模块(aka reactor)构建,与org.codehaus.mojo 插件,例如,gwt:run 必须在客户端和服务器代码都“在线”的项目上运行;导致多模块构建中出现可怕的黑客攻击,例如必须 mvn install 所有依赖模块(因为不能在聚合器模块上调用 gwt:run)并使用 build-helper-maven-plugin 从其他模块引入客户端源以实现无缝开发体验。

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

关于java - net.ltgt.gwt.maven 和 org.codehaus.mojo GWT Maven 插件有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37910365/

相关文章:

maven - 在Gradle中过滤存储库的依赖项查找

java - 用于建模 View 的类

Java + Google map API + GWT + 地理编码尝试 : Getting this exception at run time- compiling fine

java - 尝试在任何布局中添加描边宽度时,MaterialButton 不可见

java - 调用具有简单返回的函数与仅进行检查有区别吗?

java - Android - ViewPager 在单击 ListView 项目时不允许我更改页面

maven - 无法为 git 存储库中的 Gradle 子文件夹配置 Jenkins 作业。这适用于 Maven

java - 编译时: Creation table error

maven - maven依赖插件和Hadoop

java - appspot.com 上的 Oauth 2.0