开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
  1. Home
  2. Computer Science
  3. This article

Spring Boot 创建一个可以执行的 Jar

2021年01月13日 496Browse 0Like 0Comments

我们希望将我们上面的程序打包成一个可以执行的 Jar,然后我们可以通过这个 Jar 部署到生产服务器上来运行。 可以执行的 Jar(Executable jars)有时候也会被称为 “fat jars”,这个 jar 中有你所有编译的类和所有运行这些类所需要依赖的 jar。换句话说就是将所有的依赖和你的代码打包成一个可以执行的文件,你可以通过命令行直接运行这个 jar,而不需要将这个 jar 部署到服务器或者容器中。

可执行的 jars 和 Java

Java 并没有给提供一个标准的方案来载入所有需要的 jar 文件(有时候 jar 自己还会包含有其他的 jar)。 当你尝试分发可以自动运行的 jar 的时候,你可能会遇到一些问题,而导致自动运行的 jar 没有办法正常运行和启动。

为了解决这个问题,很多应用开发者使用 “uber” jars。 一个 uber jar 包中包括了所有应用程序运行所需要的类和依赖的类,然后将这些编译后的类打包到一个单独的归档文件中。 使用这种方式来部署你的引用的话,当你尝试通过部署的应用来查看需要的类还引入了那些包 或者 jar 的时候就变得非常困难。 同时,这种方式还有一些潜在的其他问题,比如说在不同的包中有相同名字的类。这种情况将会导致编译无法通过或者有丢失类的问题。

Spring Boot 采用了 其他的方法 同时能够让你能够访问 Jars 的目录。

为了在 Spring Boot 中创建一个可以执行的 jar,我们需要将插件 spring-boot-maven-plugin 添加到我们的 pom.xml 文件中。 将下面的代码插入到 dependencies 部分的后面:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

 

spring-boot-1st-execu-01

 

spring-boot-starter-parent POM 包含有 <executions> 配置来绑定 repackage 的任务。 如果你没有使用 parent POM,你需要自行申明这个配置。 请参考 插件文档 来获得更多的详细信息。

保存更新过后的 pom.xml 文件,然后从命令行中运行 mvn package 命令,你将从命令行中看到下面的输出:

$ mvn package

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.5.0-SNAPSHOT:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

如果是第一次构建的话,会下载需要的插件,可能会需要耗费一点点时间。

 

spring-boot-1st-execu-02

 

当构建完成后,访问 target 目录,你在这个目录中应该能够找到一个 myproject-0.0.1-SNAPSHOT.jar 的文件。 这个文件的大小应该差不多有 10 MB 左右。 如果你想看看这个文件里面有些什么东西的话,你可以通过运行 jar tvf 命令来进行查看:

$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar

通过运行上面的命令后,你应该可以在 target 目录中看到小文件被命名为 myproject-0.0.1-SNAPSHOT.jar.original 。 这些文件就是 Maven 命令创建的。Spring Boot 会将上面创建的这些文件进行重新打包。

 

spring-boot-1st-execu-03

 

你可以通过运行 java -jar 命令来运行你的应用程序,输入上面命令后,你的控制台应该会有下面的输出:

$ java -jar target/myproject-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.5.0-SNAPSHOT)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)

 

spring-boot-1st-execu-04

 

与前面使用命令运行的方式一样,你可以通过单击 ctrl-c 来退出当前运行的应用。

https://www.ossez.com/t/spring-boot-jar/1111

Tags: None
Last updated:2021年01月13日

HoneyMoose

有温度的人文和独立的思考

Like
< Previous
Next >

Comments

Cancel reply

Archives
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,362)
    • Confluence (663)
    • Gradle (12)
  • U.S. (482)
  • 文化旅游 (145)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1