我是靠谱客的博主 个性战斗机,这篇文章主要介绍SpringBoot使用Maven打包——将依赖Jar包与应用Jar包分离,现在分享给大家,希望可以做个参考。

SpringBoot项目使用Maven打包:

复制代码
1
2
3
4
5
6
7
8
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>

执行mvn clean package命令后,生成应用jar,用压缩文件查看,maven自动生成了MANIFEST.MF文件:

复制代码
1
2
3
4
5
6
7
8
9
10
Manifest-Version: 1.0 Implementation-Title: github-demo Implementation-Version: 2.1-SNAPSHOT Start-Class: com.gitlab.example.demo.DemoApplication Spring-Boot-Classes: BOOT-INF/classes/ Spring-Boot-Lib: BOOT-INF/lib/ Build-Jdk-Spec: 1.8 Spring-Boot-Version: 2.2.1.RELEASE Created-By: Maven Archiver 3.4.0 Main-Class: org.springframework.boot.loader.JarLauncher

 依赖的jar也在应用jar 中,位于BOOT-INF/lib/目录下。使用java -jar 即可运行这个应用jar包。

       为了提高部署的效率,需要把应用jar包跟依赖jar包分开,当项目中没有新增依赖的jar包时,只需把应用单独打包出来就行,这样应用jar包的大小会小很多。

       这需要maven-jar-plugin插件,改变默认的打包方式;还需要maven-dependency-plugin,把依赖的jar包打包。pom文件主要部分如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<build> <plugins> <!--设置应用 Main 参数启动依赖查找的地址指向外部 lib 文件夹--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <!-- 项目所依赖的jar位于同一级的lib目录下--> <classpathPrefix>lib/</classpathPrefix> </manifest> </archive> </configuration> </plugin> <!--设置 SpringBoot 打包插件不包含任何 Jar 依赖包--> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <includes> <include> <groupId>nothing</groupId> <artifactId>nothing</artifactId> </include> </includes> </configuration> </plugin> <!--设置将 lib 拷贝到应用 Jar 外面--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>prepare-package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build>

          目的就是为了把依赖的jar包放到target/lib目录下,在MANIFEST.MF文件中自动添加Class-Path属性,指向所依赖的jar包:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Manifest-Version: 1.0 Implementation-Title: github-demo Implementation-Version: 2.4-SNAPSHOT Start-Class: com.gitlab.example.demo.DemoApplication Spring-Boot-Classes: BOOT-INF/classes/ Class-Path: lib/spring-boot-starter-web-2.2.1.RELEASE.jar lib/spring-b oot-starter-2.2.1.RELEASE.jar lib/spring-boot-2.2.1.RELEASE.jar lib/s pring-boot-autoconfigure-2.2.1.RELEASE.jar lib/spring-boot-starter-lo gging-2.2.1.RELEASE.jar lib/logback-classic-1.2.3.jar lib/logback-cor e-1.2.3.jar lib/log4j-to-slf4j-2.12.1.jar lib/log4j-api-2.12.1.jar li b/jul-to-slf4j-1.7.29.jar lib/jakarta.annotation-api-1.3.5.jar lib/sn akeyaml-1.25.jar lib/spring-boot-starter-json-2.2.1.RELEASE.jar lib/j ackson-databind-2.10.0.jar lib/jackson-annotations-2.10.0.jar lib/jac kson-core-2.10.0.jar lib/jackson-datatype-jdk8-2.10.0.jar lib/jackson -datatype-jsr310-2.10.0.jar lib/jackson-module-parameter-names-2.10.0 .jar lib/spring-boot-starter-tomcat-2.2.1.RELEASE.jar lib/tomcat-embe d-core-9.0.27.jar lib/tomcat-embed-el-9.0.27.jar lib/tomcat-embed-web socket-9.0.27.jar lib/spring-boot-starter-validation-2.2.1.RELEASE.ja r lib/jakarta.validation-api-2.0.1.jar lib/hibernate-validator-6.0.18 .Final.jar lib/jboss-logging-3.4.1.Final.jar lib/classmate-1.5.1.jar lib/spring-web-5.2.1.RELEASE.jar lib/spring-beans-5.2.1.RELEASE.jar l ib/spring-webmvc-5.2.1.RELEASE.jar lib/spring-aop-5.2.1.RELEASE.jar l ib/spring-context-5.2.1.RELEASE.jar lib/spring-expression-5.2.1.RELEA SE.jar lib/slf4j-api-1.7.29.jar lib/spring-core-5.2.1.RELEASE.jar lib /spring-jcl-5.2.1.RELEASE.jar Spring-Boot-Lib: BOOT-INF/lib/ Build-Jdk-Spec: 1.8 Spring-Boot-Version: 2.2.1.RELEASE Created-By: Maven Archiver 3.4.0 Main-Class: org.springframework.boot.loader.JarLauncher

这样,当打出来的应用jar包,跟依赖jar包的lib文件夹放在同一个目录下时,使用java -jar就可以运行应用jar包了。

最后

以上就是个性战斗机最近收集整理的关于SpringBoot使用Maven打包——将依赖Jar包与应用Jar包分离的全部内容,更多相关SpringBoot使用Maven打包——将依赖Jar包与应用Jar包分离内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(140)

评论列表共有 0 条评论

立即
投稿
返回
顶部