javascript
Spring boot 打包jar 将配置文件分离
感謝@payyouyont博主對(duì)本篇文章的支持,參考地址
https://blog.csdn.net/pei19890521/article/details/80984707
二.打jar包并分離配置文件
一般的需求是想動(dòng)態(tài)修改數(shù)據(jù)庫(kù)配置文件,所以我這里做的是將jdbc.properties配置文件分離出來(lái),項(xiàng)目結(jié)構(gòu)如下
向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><!--配置自己的啟動(dòng)類--></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><!--把項(xiàng)目自己編譯出來(lái)的jar文件,打包進(jìn)zip文件的根目錄--><fileSet><directory>target</directory><outputDirectory>/</outputDirectory><includes><include>*.jar</include></includes></fileSet><fileSet><directory>src/main/resources</directory> <!-- 指定歸檔文件(要打的jar包)要包含的目錄(下的文件及文件夾) --><outputDirectory>/</outputDirectory> <!-- 指定要將當(dāng)前目錄(<directory>標(biāo)簽中的目錄放在歸檔文件(要打的jar包)bin目錄下) --><includes><include>config/jdbc.properties</include> <!-- 精確控制要包含的文件,<exclude>用于精確控制要排除的文件 --><include>application.properties</include> <!-- 精確控制要包含的文件,<exclude>用于精確控制要排除的文件 --></includes></fileSet></fileSets> </assembly> 此時(shí)已經(jīng)可以將配置文件分離出來(lái)進(jìn)行打包了,此時(shí)如果用maven的mvn clean package命令打出來(lái)的包雖然有xxx.zip包,但是是不能用的.必須先用mvn clean package將可執(zhí)行jar打出來(lái),然后用mvn assembly:single命令打zip包zip結(jié)構(gòu)如下現(xiàn)在將打的zip包解壓出來(lái),已經(jīng)能運(yùn)行了,cd到j(luò)ar所在的文件夾,執(zhí)行Java -jar xxxx.jar但是此時(shí)不會(huì)讀取分離出來(lái)的配置文件 依然是讀取jar包中存在的配置文件此時(shí)執(zhí)行java -jar -Dspring.config.location=%cd%\application.properties -Dlogging.path=%cd%\log %cd%\xxx.jar即可讀取外部配置文件此時(shí)讀取的application.properties是外置的配置 但是jdbc.properties仍然是jar包中內(nèi)置的 所以還需要做一些工作在application.properties中添加一個(gè)字段 config.path=D:\\config\\jdbc.properties (zip解壓到的路徑)然后創(chuàng)建DataSource時(shí)讀取它```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
大功告成,現(xiàn)在先將項(xiàng)目clean一下(因?yàn)樾薷牧祟愇募?如果不clean,每次打的zip包里用的還是舊的jar包)
然后執(zhí)行package(現(xiàn)在打了最新的jar)
再運(yùn)行mvn assembly:single將jar以及配置文件打到zip中
最后cd到j(luò)ar所在文件夾 執(zhí)行java -jar -Dspring.config.location=%cd%\application.properties -Dlogging.path=%cd%\log %cd%\xxx.jar
總結(jié)
以上是生活随笔為你收集整理的Spring boot 打包jar 将配置文件分离的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SQL语句中timestamp进行排序B
- 下一篇: js基础语法(01)-JS中+号的三种含