使用Springboot 打jar包實現(xiàn)分離依賴lib和配置
打jar包實現(xiàn)分離依賴lib和配置
為了業(yè)務需要配置文件和jar分離,便于使用者修改配置信息,在網(wǎng)上找了很久,最終找到一個簡單有效的方法。
操作步驟
打開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打包即可:
打包之后的樣子:
這樣就完成了配置文件以及l(fā)ib包和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文件夾復制出來,后續(xù)使用。
其中\(zhòng)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中的一部分配置,再次打包,此時打包的內容已經(jīng)排除了其依賴的各種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包已經(jīng)排除掉了lib文件。推薦第一種方便快捷。
(3)將第一次打包提取出來的lib文件夾和第二次打的jar包放在同一個目錄下,執(zhí)行以下命令,啟動項目:
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文件夾同目錄下。
執(zhí)行啟動腳本或者命令即可
java -jar -Dloader.path=./lib springboot-multi-datasources-0.0.1-SNAPSHOT.jar
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
mybatis實現(xiàn)增刪改查_動力節(jié)點Java學院整理
本文通過實例代碼給大家介紹了mybatis實現(xiàn)增刪改查功能,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-09-09Java在Excel中添加水印的實現(xiàn)(單一水印、平鋪水印)
這篇文章主要介紹了Java在Excel中添加水印的實現(xiàn)(單一水印、平鋪水印),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04java序列化對象根據(jù)不同配置動態(tài)改變屬性名的方法
本文主要介紹了java序列化對象根據(jù)不同配置動態(tài)改變屬性名的方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05