HoneyMoose
  • 首页
  • Java
  • Jersey
  • Jira
  • Confluence
  • U.S.
    • USRealEstate
    • U.S. Travel
    • H1B
  • 项目和网站
    • CWIKI.US
    • OSSEZ 社区
    • WIKI.OSSEZ.COM
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
BLOG.OSSEZ.COM
A responsive blog theme focused om user reading experience
  1. Home
  2. Computer Science
  3. This article

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

2021年01月17日 482Browse 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月17日

Kratos

stay absorbed stay excellent

Like
< Previous
Next >

Comments

Cancel reply

Newest Hotspots Random
Newest Hotspots Random
Java Optional 初始为空 Java 8 开始新增的 Optional 类 - Optional 对象中的返回 Java 8 开始新增的 Optional 类 - Optional 对象中的异常 Java 8 开始新增的 Optional 类 - Optional 中的方法 Java 8 开始新增的 Optional 类 - 检查 Optional 的值 Java 8 开始新增的 Optional 类 - 创建 Optional 对象
Confluence OGNL 注入漏洞的严重安全问题Java 中的 NaN如何用 Java 判断一个给定的数是不是素数IntelliJ IDEA 如何针对Java 代码快速打印 println是应该是用 Log 还是 Logger 来定义 LogDom4j 如何输出 Document 中的内容到文本
Confluence 的表格如何自适应宽度 Discourse 如何不使用 Let’s Encrypt 而使用 CA 签名的密钥进行安装 Edge 浏览器如何查看当前网站的 SSL 证书 IntelliJ IDEA Java 中如何快速插入 try / catch 有人问如果每天学自学 3 到 4小时的 Java,一年后能到什么程度 AWS CloudFront CDN + S3 CORS 跨域访问的问题
Categories
  • Akka
  • Algorithm(算法)
  • AMQP
  • Angular
  • CI
  • Compile And CI
  • Computer Science
  • Confluence
  • DataBase
  • Gradle
  • H1B
  • Hibernate
  • IDE
  • Java
  • Jersey
  • Jira
  • MariaDB
  • PrestaShop
  • Spring
  • Spring Batch
  • U.S.
  • U.S. Travel
  • USRealEstate
  • 我的小厨

COPYRIGHT © 2020 HoneyMoose. ALL RIGHTS RESERVED.

THEME CWIKIUS.CN MADE BY VTROIS