使用Springboot 打jar包实现分离依赖lib和配置
目录
- 打jar包实现分离依赖lib和配置
- 操作步骤
- Springboot中jar包分离(分离lib包)
- jar包分离介绍
- jar包分离实施步骤
- 小结一下
打jar包实现分离依赖lib和配置
为了业务需要配置文件和jar分离,便于使用者修改配置信息,在网上找了很久,最终找到一个简单有效的方法。
操作步骤
打开project工程的pom.xml文件,将下列配置粘贴到pom文件中:
<properties> <java.version>1.8</java.version> <!--在此配置打包输出的路径--> <directory>d:/out/</directory> </properties> <build> <plugins> <!--上线部署 JAR启动分离依赖lib和配置--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.1.0</version> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <!--不打包资源文件--> <excludes> <exclude>*.**</exclude> </excludes> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <!--jar包不包含唯一版本标识--> <useUniqueVersions>false</useUniqueVersions> <!--程序启动类application.java的路径--> <mainClass>com.sy.xx.Application</mainClass> </manifest> <!-- 指定配置文件目录,这样jar运行时会去找到同目录下的config文件夹下查找 --> <manifestEntries> <Class-Path>config/</Class-Path> </manifestEntries> </archive> <outputDirectory>${directory}</outputDirectory> </configuration> </plugin> <!--拷贝依赖 copy-dependencies--> <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> ${directory}/lib/ </outputDirectory> </configuration> </execution> </executions> </plugin> <!--拷贝资源文件 copy-resources--> <plugin> <artifactId>maven-resources-plugin</artifactId> <executions> <execution> <id>copy-resources</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <resources> <resource> <directory>src/main/resources</directory> <!-- 指定参与构建的resoures--> <includes> <include>*.**</include> </includes> </resource> </resources> <outputDirectory>${directory}/config</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build>
接下来使用maven package打包即可:
打包之后的样子:
这样就完成了配置文件以及lib包和jar的分离了,并且jar在运行的时候会默认去读取config文件夹中的配置,修改起来非常方便。
Springboot中jar包分离(分离lib包)
jar包分离介绍
springboot构建jar部署,通过使用 java -jar xxx.jar 命令启动服务,非常方便。
但是通过maven构建的jar包含 \BOOT-INF\lib\下的所有依赖jar包,导致jar包文件太大。
本文将lib文件夹下所依赖的jar包分离出来,解决文件过大问题。
jar包分离实施步骤
(1)按照正常的springboot项目打包方式,对项目进行打包package,其打包后目录如下:
|--META-INF |--BOOT-INF |--classes |--lib |--org
打完包后,进行解压。找到\BOOT-INF\lib文件夹,将lib文件夹复制出来,后续使用。
其中\BOOT-INF\lib目录下存放着所有的依赖jar包,ojdbc8-19.8.0.0.jar / lombok-1.18.16.jar / spring-boot-2.4.1.jar … 占用了大量的空间。jar包分离就是将其独立开来。
(2)通过修改pom.xml中的一部分配置,再次打包,此时打包的内容已经排除了其依赖的各种jar包。
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!--start--> <configuration> <!--这里对应项目的主入口--> <mainClass>com.ityj.multidb.SpringbootMultiDatasourcesApplication</mainClass> <layout>ZIP</layout> <includes> <include> <groupId>nothing</groupId> <artifactId>nothing</artifactId> </include> </includes> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <!--end--> </plugin>
1:直接重新打包,即可
2:如果通过命令:在idea工具中打入:mvn clean dependency:copy-dependencies -DoutputDirectory=target/lib package
两种方式打包都可以,最终的jar包已经排除掉了lib文件。推荐第一种方便快捷。
(3)将第一次打包提取出来的lib文件夹和第二次打的jar包放在同一个目录下,执行以下命令,启动项目:
java -jar -Dloader.path=./lib springboot-multi-datasources-0.0.1-SNAPSHOT.jar
小结一下
springboot项目什么都不用动,直接通过maven工具package打包,进行解压。并把\BOOT-INF\lib目录下的lib文件夹整个内容复制出来。(取出lib文件夹的内容)
在项目pom.xml中的plugin中加入以下内容,注意层级关系以及要把入口类改成对应的项目名。(start到end的内容)
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!--start--> <configuration> <!--这里对应项目的主入口--> <mainClass>com.ityj.multidb.SpringbootMultiDatasourcesApplication</mainClass> <layout>ZIP</layout> <includes> <include> <groupId>nothing</groupId> <artifactId>nothing</artifactId> </include> </includes> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <!--end--> </plugin>
修改后再次package打包,这次的jar包就没有了依赖内容,文件较小。把生成的jar包放在与首次打包生成的lib文件夹同目录下。
执行启动脚本或者命令即可
java -jar -Dloader.path=./lib springboot-multi-datasources-0.0.1-SNAPSHOT.jar
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。