我一直在尝试通过Maven在GlassFish V3中集成部署java .war
。虽然我找到了一些插件,但它们中没有一个看起来非常活跃:
我从Eskato's Blog得到了最多的信息,它写于2008年3月,所以我不知道GlassFish Maven集成的状态是什么,也找不到合适的插件。使用Maven GlassFish Plugin我取得了一些成功,但它仍然无法完全满足它所支持的所有目标,这使得某些命令无效。
有没有其他人能够成功整合Glassfish V3和Maven?如果是这样,你用什么资源来完成它?
答案 0 :(得分:41)
更新: CARGO-491 已修复,我已相应更新了我的答案。总而言之,现在基本上有三种选择:
第一种选择是使用Maven GlassFish Plugin。此插件允许与Maven构建生命周期中的本地或远程GlassFish安装以及Glassfish域和组件部署的管理进行交互。
第二种选择是使用Maven Embedded Glassfish Plugin。正如其名称所述,此插件不依赖于现有安装,而是使用嵌入式GlassFish,与插件在同一JVM中运行。这个插件非常好,如果你想保持你的构建可移植(任何人都可以获得你的POM并运行一个涉及GlassFish的构建而不安装它),其功能几乎与普通的GlassFish安装相同,当然除了集群(你可以使用如果您愿意,可以预先配置domain.xml
。有关示例,请参阅Testing with the GlassFish Maven plugin and JavaDB Embedded。
Kohsuke Kawagushi发起的工作最终已整合到Cargo中,并从Cargo 1.0.1开始,GlassFish 3.x is now supported。因此,使用Maven Cargo plugin是第三种选择。对于想要以不可知的方式与容器交互的构建,这将是有趣的。但我不确定Cargo是否允许GlassFish特定插件的所有灵活性(例如,部署JMS资源等)。
答案 1 :(得分:8)
maven-glassfish-plugin和maven-embedded-glassfish-plugin都有其优点和缺点。主要区别在于后者使用Embedded Glassfish实例,如其名称所示,即服务器在与插件相同的VM中运行。
因此,您无法使用maven-embedded-glassfish-plugin将WAR部署到独立的Glassfish服务器,您需要使用maven-glassfish-plugin来执行此操作。
我对maven-glassfish-plugin的主要问题是它与Glassfish服务器的交互是有状态的 - 我找不到使用它的方法,这样我的WAR就可以在任何情况下部署到服务器,无论先前的构建是否成功。
如果已部署WAR,则glassfish:deploy不起作用。 glassfish:如果未部署WAR,则redeploy不起作用。 Maven没有if-else逻辑...
答案 2 :(得分: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项目的任何人来说,这些都是有用的提示
答案 3 :(得分:1)
你可以使用这个:
http://www.hascode.com/2011/09/java-ee-6-development-using-the-maven-embedded-glassfish-plugin/
答案 4 :(得分:0)
我在maven-glassfish-plugin.dev.java.net上使用glassfish插件并进行了一些代码更改以支持v3。我请求了提交者状态并等待确认。希望我能做出改变。