use*_*736 2 java deployment jar maven
我有一个Java控制台应用程序,到目前为止它是在Netbeans IDE中开发的.当Netbeans构建应用程序时,它会创建dist目录并将应用程序作为jar存档构建到此目录中,并dist/lib复制所有依赖项.此目录可以复制到最终目的地并运行.
现在我正在尝试将这个项目转移到Maven.一切顺利,我可以编译和打包我的应用程序,并将jar创建到target目录中.我用它maven-jar-plugin来设置清单中的主类,并将maven-shade-plugin所有源包装到一个jar文件中.
我想问你在现实世界中如何部署这样的Maven项目?我应该使用所有target目录,将其复制到最终目的地并运行,因为我已经习惯使用Netbeans了吗?当我不使用时会产生什么后果maven-shade-plugin- 所有库都被定义为依赖关系?我问,因为在我的测试项目中,这些库在target目录中不存在.
我的问题 - 我有一个Java控制台应用程序"A"打包通过Maven(没有maven-shade-plugin)和Linux服务器"S" 打包这个应用程序应运行.我可以手动将所有目标目录复制到服务器"S",还是有一些更好/更自动的方式如何在现实世界中解决?
只需复制目标目录就无法解决问题.我使用Maven打包了许多独立应用程序,我使用了Maven Assembly Plugin.您可以使用程序集插件创建分发存档(zip,tar.gz),客户可以解压缩并开始运行.
这取决于您,您希望目标应用程序目录结构(发布)的方式.我通常最终得到类似的东西
bin/
conf/
lib/
log/
Run Code Online (Sandbox Code Playgroud)
该bin目录包含一个shell/batch脚本,用于通过调用主类来运行程序,设置适当的类路径,提供相关的内存设置等.我更喜欢使用classworlds(由Maven使用)来引导我的应用程序并简化起始脚本的编写.
conf directory包含应用程序的配置文件以及log4j等日志配置文件.我在classpath上添加了此目录,以便在运行时更轻松地访问配置资源.
lib directory包含所有依赖项jar以及代码的jar文件.
log 是您的日志记录配置将指向输出日志文件的位置.
请注意,此结构适用于独立服务器(如应用程序).还有一个bin目录和运行脚本允许您将此目录添加到Windows/Linux上的PATH,以确保您可以从任何地方运行该应用程序.
如果要打包命令行实用程序,简单的阴影jar可能适合您.就个人而言,我不是最大的粉丝java -jar application.jar
| 归档时间: |
|
| 查看次数: |
2719 次 |
| 最近记录: |