當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring boot 打包jar 将配置文件分离
生活随笔
收集整理的這篇文章主要介紹了
Spring boot 打包jar 将配置文件分离
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
感謝@payyouyont博主對本篇文章的支持,參考地址
https://blog.csdn.net/pei19890521/article/details/80984707
二.打jar包并分離配置文件
一般的需求是想動態修改數據庫配置文件,所以我這里做的是將jdbc.properties配置文件分離出來,項目結構如下
向pom文件中添加assembly插件配置
<!--========================打jar分離配置文件begin=========================================--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><manifest><addClasspath>true</addClasspath><classpathPrefix></classpathPrefix><mainClass>com.zzzy.zc.Application</mainClass><!--配置自己的啟動類--></manifest></archive></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><!-- The configuration of the plugin --><configuration><descriptors><descriptor>src/main/resources/config/package.xml</descriptor><!--配置package.xml路徑--></descriptors></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin><!--===========================打jar分離配置文件end==========================-->在config文件夾下新建package.xml文件
```xml <?xml version="1.0" encoding="UTF-8"?> <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd"><id>package</id><formats><format>zip</format></formats><includeBaseDirectory>true</includeBaseDirectory><fileSets><!--把項目自己編譯出來的jar文件,打包進zip文件的根目錄--><fileSet><directory>target</directory><outputDirectory>/</outputDirectory><includes><include>*.jar</include></includes></fileSet><fileSet><directory>src/main/resources</directory> <!-- 指定歸檔文件(要打的jar包)要包含的目錄(下的文件及文件夾) --><outputDirectory>/</outputDirectory> <!-- 指定要將當前目錄(<directory>標簽中的目錄放在歸檔文件(要打的jar包)bin目錄下) --><includes><include>config/jdbc.properties</include> <!-- 精確控制要包含的文件,<exclude>用于精確控制要排除的文件 --><include>application.properties</include> <!-- 精確控制要包含的文件,<exclude>用于精確控制要排除的文件 --></includes></fileSet></fileSets> </assembly> 此時已經可以將配置文件分離出來進行打包了,此時如果用maven的mvn clean package命令打出來的包雖然有xxx.zip包,但是是不能用的.必須先用mvn clean package將可執行jar打出來,然后用mvn assembly:single命令打zip包zip結構如下現在將打的zip包解壓出來,已經能運行了,cd到jar所在的文件夾,執行Java -jar xxxx.jar但是此時不會讀取分離出來的配置文件 依然是讀取jar包中存在的配置文件此時執行java -jar -Dspring.config.location=%cd%\application.properties -Dlogging.path=%cd%\log %cd%\xxx.jar即可讀取外部配置文件此時讀取的application.properties是外置的配置 但是jdbc.properties仍然是jar包中內置的 所以還需要做一些工作在application.properties中添加一個字段 config.path=D:\\config\\jdbc.properties (zip解壓到的路徑)然后創建DataSource時讀取它```java @SpringBootConfiguration @PropertySource(value = { "classpath:config/jdbc.properties","file:${config.path}" }, ignoreResourceNotFound = true,encoding = "utf-8") public class DatasourceConfig {@Bean(name = "dataSource")@Qualifier(value = "dataSource")@Primary@ConfigurationProperties(prefix = "c3p0")public DataSource dataSource() {return DataSourceBuilder.create().type(com.mchange.v2.c3p0.ComboPooledDataSource.class).build();} }jdbc.properties配置如下
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/test
c3p0.user=root
c3p0.password=123456
c3p0.driverClass=com.mysql.jdbc.Driver
大功告成,現在先將項目clean一下(因為修改了類文件,如果不clean,每次打的zip包里用的還是舊的jar包)
然后執行package(現在打了最新的jar)
再運行mvn assembly:single將jar以及配置文件打到zip中
最后cd到jar所在文件夾 執行java -jar -Dspring.config.location=%cd%\application.properties -Dlogging.path=%cd%\log %cd%\xxx.jar
總結
以上是生活随笔為你收集整理的Spring boot 打包jar 将配置文件分离的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL语句中timestamp进行排序B
- 下一篇: maven 项目报错Context in