今天上班时我遇到了一些有趣的事情。假设我有一个使用ant构建文件编译的旧java项目,我们已将此项目转换为maven项目。所以现在要构建这个项目,我们只需要进行mvn安装。
当我打电话时
mvn install
我在目标文件夹下获得了myproject.jar,以及目标文件夹中lib文件夹下的所有依赖项。
要运行此jar的可执行文件,我需要执行以下操作:
java -classpath $classpath com.myproject.Mainclass $myArgs
其中$ classpath是我所有外部库的路径,其中$ myArgs是传递给main函数的参数。
我遇到了这个website,我真的考虑使用spring boot maven插件打包我的可执行jar。
如果所有依赖项都打包在一个jar文件中,那么执行它会不会更容易?为什么我会使用手动配置和Spring Boot Maven插件来执行可执行jar?
这样做的优点和缺点是什么?
答案 0 :(得分:0)
正如您所链接的文章涵盖了如何进行此类单个jar文件打包的优缺点,如果您想使用此方法,我会写出您需要考虑的事项。
用户不必维护任何依赖关系。他们运行应用程序所需要做的就是获取jar文件并执行java -jar file.jar
。
如果您的应用使用了某些外部依赖项,则可以确定它们是您选择的版本。使用" classic"方法用户可以轻松地将其更新为可能需要在您的应用中执行某些迁移步骤的版本。
如果您的应用具有较大的依赖关系,则每次更新都需要用户下载整个包, 即使依赖关系没有改变。
要更改任何依赖项的版本,您需要更新整个程序包,其中使用旧方法只能更新依赖项jar。
总结一下,如果你的应用程序没有任何沉重的(文件大小)依赖关系,我将亲自使用单jar文件方法。即使您的依赖项经常更改。无论您的应用是否需要更新或是否依赖,都可以更轻松地更改单个文件。