java - 构建可执行 JAR 有什么好处

标签 java spring maven spring-boot

今天在工作中我发现了一些有趣的事情。假设我有一个旧的 java 项目,它是用 ant 构建文件编译的,我们已将该项目转换为 Maven 项目。所以现在要构建这个项目,我们只需要执行 mvn install 即可。

当我打电话时

mvn install

我在目标文件夹下得到了一个 myproject.jar,以及目标文件夹内的 lib 文件夹下的所有依赖项。

要运行这个 jar 的可执行文件,我需要执行以下操作:

java -classpath $classpath com.myproject.Mainclass $myArgs

其中 $classpath 是所有外部库的路径,$myArgs 是传递给主函数的参数。

我遇到了这个website我真的正在考虑使用 spring boot maven 插件来打包我的可执行 jar。

如果将所有依赖项都打包在一个 jar 文件中,执行起来不是更容易吗?

为什么我要对可执行 jar 使用手动配置而不是 Spring Boot Maven 插件?

这样做的优点和缺点是什么?

最佳答案

由于您链接的文章介绍了如何进行此类单个 jar 文件打包的优缺点,因此如果您想使用此方法,我将写出您需要考虑的事项。

<小时/>

优点:

1。部署简单

用户不必维护任何依赖项。运行应用程序所需要做的就是获取 jar 文件并执行 java -jar file.jar

2。没有简单的方法来由用户更新依赖项

如果您的应用使用某些外部依赖项,您可以确保它们采用您选择的版本。使用“经典”方法,用户可以轻松地自行将其更新到应用程序中可能需要一些迁移步骤的版本。

缺点:

1。最终包装的尺寸

如果你的应用有很大的依赖项,每次更新都需要用户下载整个包, 即使依赖关系没有改变。

2。没有简单的方法来由用户更新依赖项

要更改任何依赖项的版本,您需要更新整个包,而使用旧方法您只能更新依赖项 jar。

<小时/>

总而言之,如果您的应用程序没有任何严重的(就文件大小而言)依赖性,我个人将使用单个 jar 文件方法。即使您的依赖项经常发生变化。无论您的应用程序或其某些依赖项是否需要更新,更改单个文件都要容易得多。

关于java - 构建可执行 JAR 有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49181955/

相关文章:

java - Spring:将属性文件注入(inject) map

spring - 从 IntelliJ 运行时如何激活 Spring Boot 配置文件?

java - 设置 JAVA_HOME 时出错

java - Maven 和多个客户定制

java - 枚举的 Maven 包不存在

java - 快速写入 : Memory-Mapped file versus BufferedWriter

java - 如何处理这个不会构造的迭代器类型的对象?

java - Spring Boot嵌入的Jetty启动后立即停止

java - spring如何使用一个web环境进行多个测试

java - 使用 SurfaceView 时锁定 Canvas 失败且 Canvas 为空