SpringBoot项目打包分离lib包与配置文件 阳光穿透心脏的1/2处 2024-03-31 08:57 17阅读 0赞 ### 1. 不分离打包(默认) ### SpringBoot初始化建立项目默认的`spring-boot-maven-plugin`插件,进行项目打包,这个插件会将项目所有的依赖打入`BOOT-INF/lib`下,`pom`文件配置如下: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> `package`打包后,打出的是完整的可运行的`jar`包,根据项目的不同大小不同,整体来说是比较大的。 ![在这里插入图片描述][d8bc0036654346e68e73ee3c6f751cda.png_pic_center] ### 2. 分离打包 ### 替换为`maven-jar-plugin`打包插件,`pom`文件修改如下: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <!--不打入jar包的文件类型或者路径--> <excludes> <exclude>*.properties</exclude> <exclude>*.yml</exclude> <exclude>*.yaml</exclude> </excludes> <archive> <manifest> <!-- 执行的主程序路径 --> <mainClass>com.dcxuexi.Springboot03JarApplication</mainClass> <!--是否要把第三方jar放到manifest的classpath中--> <addClasspath>true</addClasspath> <!--生成的manifest中classpath的前缀,因为要把第三方jar放到lib目录下,所以classpath的前缀是lib/--> <classpathPrefix>lib/</classpathPrefix> <!-- 打包时 MANIFEST.MF 文件不记录的时间戳版本 --> <useUniqueVersions>false</useUniqueVersions> </manifest> <manifestEntries> <!-- 在 Class-Path 下添加配置文件的路径 --> <Class-Path>config/</Class-Path> </manifestEntries> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib/</outputDirectory> </configuration> </execution> </executions> </plugin> <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> <includes> <include>*.properties</include> <include>*.yml</include> <exclude>*.yaml</exclude> </includes> </resource> </resources> <outputDirectory>${project.build.directory}/config</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build> 先后分别双击执行`clean`和`package`命令,进行清理和打包。 ![在这里插入图片描述][ce9f2bc3a3a048bcac7148e54e50ff36.png_pic_center] 打包后的结构如下: ![在这里插入图片描述][58f75887733b4f5d947588fa3711619c.png_pic_center] 使用命令`java -jar .\springboot_03_jar-0.0.1-SNAPSHOT.jar`启动jar ![在这里插入图片描述][ba75dd71d16544ea968bd132ab073930.png_pic_center] 这样就完成了配置文件以及`lib`包和`jar`的分离了,并且`jar`在运行的时候会默认去读取`config`文件夹中的配置,修改起来非常方便。 ### 项目代码 ### * [gitee 代码下载][gitee] * [github 代码下载][github] [d8bc0036654346e68e73ee3c6f751cda.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/31/7778a499f75e46bdb42e1c26f571f659.png [ce9f2bc3a3a048bcac7148e54e50ff36.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/31/69a9292d2698454c9d0e2488df4cae9e.png [58f75887733b4f5d947588fa3711619c.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/31/c54f76d31bb84b6dad80e359529ada99.png [ba75dd71d16544ea968bd132ab073930.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/31/824006a6da05448183ac10517697a6cd.png [gitee]: https://gitee.com/DchuangDB/SpringBootProject [github]: https://github.com/dcbut/SpringBootProject
还没有评论,来说两句吧...