Java 使用哪个Maven GlassFish插件?

Java 使用哪个Maven GlassFish插件?,java,maven-2,glassfish,glassfish-3,Java,Maven 2,Glassfish,Glassfish 3,我一直在尝试通过Maven在GlassfishV3中集成部署java.war。虽然我发现了一些插件,但它们看起来都不是很活跃: 我从中得到了最多的信息,它写在2008年3月,所以我不知道GlassFish Maven集成的状态如何,也找不到合适的插件来使用。我已经取得了一些成功,但对于它所支持的所有目标,它仍然不能完全正常工作,这使得一些命令无效 还有其他人能够成功地集成Glassfish V3和Maven吗?如果是这样,您使用了哪些资源来完成此任务?更新:已修复,我已相应地更新了我的答

我一直在尝试通过Maven在GlassfishV3中集成部署java
.war
。虽然我发现了一些插件,但它们看起来都不是很活跃:

我从中得到了最多的信息,它写在2008年3月,所以我不知道GlassFish Maven集成的状态如何,也找不到合适的插件来使用。我已经取得了一些成功,但对于它所支持的所有目标,它仍然不能完全正常工作,这使得一些命令无效

还有其他人能够成功地集成Glassfish V3和Maven吗?如果是这样,您使用了哪些资源来完成此任务?

更新:已修复,我已相应地更新了我的答案。总而言之,现在基本上有三种选择:

Maven GlassFish插件 第一种选择是使用。该插件允许与本地或远程GlassFish安装交互,并在Maven构建生命周期内管理GlassFish域和组件部署

Maven嵌入式GlassFish插件 第二种选择是使用。正如其名称所述,该插件不依赖于现有安装,而是使用嵌入式GlassFish,与插件运行在同一JVM中。如果您想保持构建的可移植性(任何人都可以获得您的POM并运行包含GlassFish的构建,而无需安装),该插件非常好,其功能几乎与普通GlassFish安装相同,当然除了集群功能(如果您愿意,可以使用预配置的
domain.xml
)。有关示例,请参见

Maven货物插件
由川口康介(Kohsuke Kawagushi)发起的工作最终整合到了Cargo中,并从Cargo 1.0.1开始。因此,第三种选择是使用。对于希望以不可知的方式与容器交互的构建来说,这将非常有趣。但我不确定Cargo是否允许GlassFish特定插件的所有灵活性(例如JMS资源的部署等)。

我在maven-GlassFish-plugin.dev.java.net上使用GlassFish插件,并做了一些代码更改以支持v3。我请求提交者状态并等待确认。希望我能提交我的更改。

maven glassfish插件和maven embedded glassfish插件各有利弊。主要区别在于后者使用的是一个嵌入式Glassfish实例,如其名称所示,即服务器与插件运行在同一个VM中

因此,您不能使用maven embedded glassfish插件将WAR部署到独立的glassfish服务器,您需要maven glassfish插件来完成这项工作

maven glassfish插件的主要问题是,它与glassfish服务器的交互是有状态的——我找不到一种方法来使用它,使我的WAR在任何情况下都能部署到服务器上,不管之前的构建是否成功


glassfish:如果战争已经部署,部署就不起作用。玻璃鱼:如果战争没有展开,重新部署就不起作用。Maven没有if-else逻辑…

您可以使用此逻辑:


我在博客中介绍了如何配置Maven Embedded GlassFish插件,使其在GlassFish 4.0上正常工作,直到该插件发布新版本

此外,还可以在glassfish-resources.xml中配置数据源并使其正常工作


这些都是非常有用的提示,对于那些想用Maven和GlassFish 4运行Java EE 7项目的人来说,看起来Maven嵌入式GlassFish插件的新地址是@mjustin,我不确定这个链接是否专门用于Maven嵌入式GlassFish插件,更多的是关于“嵌入式GlassFish v3”的API和工具。无论如何,感谢您的链接。当前版本(3.0.1)的嵌入式glassfish插件在解析tld文件时存在严重错误,这意味着您的构建将不可靠。maven glassfish插件的链接(
https://maven-glassfish-plugin.dev.java.net/
)不起作用。我相信这个
http://maven-glassfish-plugin.java.net/
是应该使用的方法。我喜欢独立方法,但正如您指出的,存在与部署/重新部署相关的问题。你找到更好的解决办法了吗?