使用哪个Maven GlassFish插件?

2022-09-01 09:43:39

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

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

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


答案 1

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

Maven GlassFish Plugin

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

Maven Embedded GlassFish Plugin

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

Maven Cargo Plugin

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


答案 2

maven-glassfish-plugin和maven-embedded-glassfish-plugin都有其优点和缺点。主要区别在于后者适用于嵌入式玻璃鱼实例,如其名称所示,即服务器与插件在同一VM中运行。

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

我在maven-glassfish插件中遇到的主要问题是它与Glassfish服务器的交互是有状态的 - 我找不到使用它的方法,以便在任何情况下我的WAR都可以部署到服务器,无论以前的构建是否成功。

glassfish:部署不起作用,如果 WAR 已经部署。玻璃鱼:如果未部署 WAR,则重新部署不起作用。而 Maven 没有 if-else 逻辑...


推荐