32

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

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

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

4

5 回答 5

41

更新: CARGO-491已修复,我已相应更新我的答案。总结一下,现在基本上有三种选择:

Maven GlassFish 插件

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

Maven 嵌入式 GlassFish 插件

第二种选择是使用Maven Embedded Glassfish Plugin。正如其名称所述,此插件不依赖于现有安装,而是使用嵌入式 GlassFish,与插件在同一 JVM 中运行。如果您想保持构建的可移植性(任何人都可以获得您的 POM 并运行涉及 GlassFish 的构建而无需安装它),这个插件非常好,它具有与普通 GlassFish 安装几乎相同的功能,当然除了集群(您可以使用domain.xml如果需要,可以预先配置)。有关示例,请参阅使用 GlassFish Maven 插件和 JavaDB Embedded进行测试。

Maven 货运插件

由 Kohsuke Kawagushi 发起的工作最终集成到 Cargo 中,从 Cargo 1.0.1 开始,现在支持 GlassFish 3.x。因此,使用Maven Cargo 插件是第三种选择。这对于想要以不可知的方式与容器交互的构建来说会很有趣。但我不确定 Cargo 是否允许 GlassFish 特定插件的所有灵活性(例如 JMS 资源的部署等)。

于 2009-12-02T23:46:14.503 回答
8

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

因此,您不能使用 maven-embedded-glassfish-plugin 将 WAR 部署到独立的 Glassfish 服务器,您需要 maven-glassfish-plugin 来执行此操作。

我对 maven-glassfish-plugin 的主要问题是它与 Glassfish 服务器的交互是有状态的 - 我找不到使用它的方法,这样我的 WAR 在任何情况下都会部署到服务器上,无论如何之前的构建是否成功。

如果 WAR 已部署,则 glassfish:deploy 不起作用。如果未部署 WAR,glassfish:redeploy 将不起作用。而且 Maven 没有 if-else 逻辑......

于 2010-05-11T19:40:43.480 回答
2

我在博客中介绍了如何配置 Maven Embedded GlassFish 插件以与 GlassFish 4.0 一起正常工作,直到该插件发布新版本。

https://blogs.oracle.com/brunoborges/entry/glassfish_4_beta_and_maven

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

https://blogs.oracle.com/brunoborges/entry/configure_datasources_for_maven_embedded

对于想要使用 Maven 和 GlassFish 4 运行 Java EE 7 项目的任何人,这些都是有用的提示

于 2013-04-10T18:07:47.903 回答
0

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

于 2010-03-19T09:29:47.847 回答