到目前为止,我们在我的公司使用 Ant。每当我们想将应用程序发送到客户端时,我们都会运行一个特殊的 Ant 脚本,该脚本将我们所有的源代码与所有 jar 库和 Ant 本身以及一个简单的批处理文件打包在一起。
然后,客户端可以将文件放在根本无法访问网络(甚至 Ant)的计算机上并运行批处理文件。只要计算机具有有效的 JDK,批处理脚本就会使用 jar 编译所有代码并创建最终由客户端部署在应用程序服务器上的 WAR/EAR。
最近我们迁移到 Maven 2。但我还没有找到做同样事情的方法。我见过 Maven 程序集插件,但这只是创建源代码分发或二进制分发。我们的场景实际上是一个混合体,因为它包含我们的源代码但我们使用的库的二进制 jar(例如 Spring、Hibernate)
那么是否可以使用 Maven 创建一个可以在完全没有网络访问权限的计算机上运行的自包含程序集/发布/包?这意味着所有的库都应该包含在里面。
如果 Maven 本身也包含在其中,则会有额外的好处,但这不是一个严格的要求。最终的包应该可以通过一个命令轻松编译(系统管理员很容易执行)。
我正在考虑为此编写自己的 Maven 插件,但我怀疑有人已经遇到过这个问题。