欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

四 打可执行的jar包

程序员文章站 2022-03-02 17:34:55
...

官方文档
java本身比较难做到jar包包含自己依赖的jar包,springboot可通过maven插件解决这个问题。

1 加入 spring-boot-maven-plugin 依赖到您的pom

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

说明:还有一些其他需要的配置已经被 spring-boot-starter-parent帮忙配置了,如果您没有使用它,您需要自己配置

2 执行命令 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.1.3.RELEASE:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

注意:这里已经是运行的 repackage命令了
这个时候你会在 target目录下面发现两个包,myproject-0.0.1-SNAPSHOT.jar包是刚刚用repackage命令打出来的包,myproject-0.0.1-SNAPSHOT.jar.original包是package打出来的原始的包。前者是可以直接运行的:java -jar target/myproject-0.0.1-SNAPSHOT.jar

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

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

您可以使用jar tvf myproject-0.0.1-SNAPSHOT.jar 去查看这两个包的结构,您会发现最大的区别是 repackage打出来的包在lib目录下已经引入了您pom中引入的其他依赖包。
下一章 五 spring-boot-starter-parent

转载于:https://www.jianshu.com/p/fba30fa9ab78