如何分离spring-boot依赖jar文件
1-背景
公司的项目使用了spring-boot,编译出来的jar包含了所有依赖,大概有20M。文件必须放到实验室的sever才能测试,由于网络原因,传输速度特别慢,20M的文件要传10多分钟,严重影响效率。于是想到把依赖的jar单独打包,我们自己jar只有几十K
2-问题原因
使用spring-boot-maven-plugin带来的问题
spring-boot的项目推荐使用spring-boot-maven-plugin打包
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artitId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>xxx.xxx.Main</mClass>
</configuration>
</plugin>
这样的打包的好处是,不需要额外的配置,所有依赖都被打入了一个包,但是它无法实现依赖单独打包,至少目前我还没找到方法
3-解决方案
步骤1:使用 maven-dependency-plugin 将依赖拷贝到特定目录
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
步骤2:使用 maven-jar-plugin 打包项目class,并指定main class
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>xxx.xxx.Main</malass>
</manifest>
</archive>
</configuration>
</plugin>
步骤3:分别上传依赖jar和项目jar到不同目录
- 依赖jar文件放到目录 {server.dir}/lib/, 以后可重复使用
- 项目jar文件放到目录 {server.dir}/,可随时更新
- 在linux上(冒号分割)
java -cp "project.jar:lib/*" xxx.xxx.Main
- 在Windows上(分号分割)
java -cp "project.jar;lib/*" xxx.xxx.Main
- 如果要传入变量,使用如下格式
java -Djavax.net.ssl.trustStore="/root/truststore.jks" -cp "project.jar;lib/*" xxx.xxx.Main
相关推荐
在描述中提到的“springBoot 所有依赖的jar包”,是指Spring Boot项目中所需的全部外部库文件,这些jar包涵盖了Spring Boot框架本身、其依赖的Spring模块和其他第三方库。 Spring Boot 的核心特性包括: 1. **起步...
《深入解析jasypt-spring-boot-starter 3.0.5依赖的POM与JAR》 在Java开发领域,构建和管理依赖是至关重要的环节。jasypt-spring-boot-starter是一个流行的安全库,它允许开发者在Spring Boot应用中轻松地实现加密...
赠送Maven依赖信息文件:druid-spring-boot-starter-1.1.9.pom; 包含翻译后的API文档:druid-spring-boot-starter-1.1.9-javadoc-API文档-中文(简体)版.zip; Maven坐标:...
赠送Maven依赖信息文件:druid-spring-boot-starter-1.2.8.pom; 包含翻译后的API文档:druid-spring-boot-starter-1.2.8-javadoc-API文档-中文(简体)版.zip; Maven坐标:...
赠送Maven依赖信息文件:seata-spring-boot-starter-1.3.0.pom; 包含翻译后的API文档:seata-spring-boot-starter-1.3.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:io.seata:seata-spring-boot-starter:1.3.0...
赠送Maven依赖信息文件:spring-boot-actuator-autoconfigure-2.3.12.RELEASE.pom; 包含翻译后的API文档:spring-boot-actuator-autoconfigure-2.3.12.RELEASE-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven...
赠送Maven依赖信息文件:dynamic-datasource-spring-boot-starter-3.4.1.pom; 包含翻译后的API文档:dynamic-datasource-spring-boot-starter-3.4.1-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:...
spring-boot-starter-test-1.0.2.RELEASE.jar 各个版本,免费下载 spring-boot-starter-test-RELEASE.jar 各个版本,免费下载 spring-boot-starter-test.jar 各个版本,免费下载 如果不能免费下载,关注我,评论区...
赠送Maven依赖信息文件:jasypt-spring-boot-3.0.4.pom; 包含翻译后的API文档:jasypt-spring-boot-3.0.4-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:...
赠送Maven依赖信息文件:spring-boot-configuration-processor-2.5.6.pom; 包含翻译后的API文档:spring-boot-configuration-processor-2.5.6-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.spring...
赠送Maven依赖信息文件:nacos-config-spring-boot-autoconfigure-0.2.7.pom; 包含翻译后的API文档:nacos-config-spring-boot-autoconfigure-0.2.7-javadoc-API文档-中文(简体)版.zip; Maven坐标:...
赠送Maven依赖信息文件:aliyun-sms-spring-boot-starter-2.0.2.pom; 包含翻译后的API文档:aliyun-sms-spring-boot-starter-2.0.2-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:io.springboot.sms:...
赠送Maven依赖信息文件:mybatis-spring-boot-autoconfigure-1.3.2.pom; 包含翻译后的API文档:mybatis-spring-boot-autoconfigure-1.3.2-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.mybatis....
MyBatis Spring Boot Starter.jar 各个版本,免费下载。 MyBatis Spring Boot Starter.jar 起步依赖和自动配置。
赠送Maven依赖信息文件:dynamic-datasource-spring-boot-starter-3.4.1.pom; 包含翻译后的API文档:dynamic-datasource-spring-boot-starter-3.4.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:...
赠送Maven依赖信息文件:druid-spring-boot-starter-1.1.10.pom; 包含翻译后的API文档:druid-spring-boot-starter-1.1.10-javadoc-API文档-中文(简体)版.zip; Maven坐标:...
赠送Maven依赖信息文件:spring-boot-configuration-processor-2.3.12.RELEASE.pom; 包含翻译后的API文档:spring-boot-configuration-processor-2.3.12.RELEASE-javadoc-API文档-中文(简体)版.zip; Maven坐标:...
使用SpringMVC构建web(包括RESTful)应用程序的初学者。...spring-boot-starter-web 为我们提供了嵌入的 Servlet 容器以及 SpringMVC 的依赖,并为 Spring MVC 提供了大量自动配置,可以适用于大多数 Web 开发场景。
赠送Maven依赖信息文件:spring-boot-configuration-processor-2.6.3.pom; 包含翻译后的API文档:spring-boot-configuration-processor-2.6.3-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.spring...
描述中提到的"spring-boot项目pom.xml中parent依赖文件spring-boot-starter-parent-1.5.13.RELEASE.pom",进一步阐述了这个压缩包的内容。在Maven项目对象模型(Project Object Model,POM)文件pom.xml中,`...