部署Java独立应用程序以及任何所需的jar依赖项,配置文件和启动脚本的最佳实践(和启用工具)是什么?
是否有任何Maven插件可以轻松发布二进制版本,例如用户不需要使用maven?
答案 0 :(得分:6)
是否有任何Maven插件可以轻松发布二进制版本,例如用户不需要使用maven?
使用Maven Assembly Plugin创建项目的zip / tar.gz / tar.bz2二进制发行版。这个插件非常灵活 - 以一些复杂的代价 - 你几乎可以做任何你想做的事情。然后deploy
(在maven意义上)生成的工件,将其上传到某处等等。
答案 1 :(得分:3)
至于依赖关系,我只使用maven dependency copy plugin并将所有依赖项复制到./lib文件夹中,并提供使用class path wildcard的启动脚本(这样就可以更改依赖关系了你想要而且不必更改启动脚本)。至于配置文件,我将它放在./config文件夹中,并再次将它包含在我的应用程序的启动脚本的类路径中(前者确实只适用于> java 1.6)。
所以最后我的应用程序几乎都有以下结构:
mystuff.jar launch.sh
./lib
./config
然后我会压缩整个事情并将其交给我的用户。整个过程可能很容易使用maven自动化,但我承认我手工完成:p
如果您愿意并且许可证允许,您也可以使用assembly plugin将所有依赖项捆绑到一个jar(内部扩展的依赖项)中。这往往会使jar变得笨重,并为用户提供更新的应用程序。更加困难。此外,由于类文件被覆盖或其他原因,我有几次问题,所以我个人坚持./lib文件夹。
答案 2 :(得分:1)
有launch4j,如果你可以使用它,它会将Java应用程序捆绑到你的平台的可执行文件中。
答案 3 :(得分:1)
如果您的部署目标支持RPM文件,我强烈建议您调查rpm-maven-plugin。它允许您轻松地将项目工件(包括依赖项)映射到RPM包。
我一直在使用它,在中型应用程序部署方面取得了巨大成功。
答案 4 :(得分:1)
您可以使用Oracle的ant或maven脚本:
http://docs.oracle.com/javafx/2/deployment/jfxpub-deployment.htm
上面不仅会编译你的代码并创建jar文件,而且还会创建二进制可执行文件(windows exe文件或Mac app文件)。它还可以创建本机安装程序。此外,它允许您将JVM包含在您的发行版中,以便最终用户不需要安装Java。
答案 5 :(得分:0)
看看Appassembler Maven Plugin。您可能还希望将其与Assembly Maven Plugin结合使用。
使用appassembler插件通过指定可执行文件名和主类来生成一组“程序”。您也可以在它前面添加并创建一个etc目录,您可以在其中添加配置文件。
如果使用启动脚本和二进制文件目录生成目录是不够的,您可以使用程序集插件将其他文件(比如您的配置文件)复制到相应的目录中和/或打包您的应用程序到档案馆。