感谢@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 将配置文件分离相关推荐

  1. spring boot 打包jar,jar没有主目录清单

    (1)spring boot 打包jar   如果有不对的还请指点,知道自己技术部怎么样,第一次写,写的有点乱    理解一下 1.在POM.xml文件下添加如下代码:注意:version.confi ...

  2. Spring Boot 打包分离依赖 JAR 和配置文件

    Spring Boot 打包分离依赖 JAR 和配置文件 2018年07月11日 15:17:09 <span class="read-count">阅读数 6145& ...

  3. Spring Boot打包成执行jar后获取classpath下文件异常解决

    Spring boot 打包后 jar文件,IDEA调试时候没什么问题,可是打包成执行jar后发现有异常抛出: class path resource [1.jpg] cannot be resolv ...

  4. (五)Debian Linux中部署Spring Boot + Vue的前后端分离项目详细过程(arm64/aarch64架构下)

    专题系列往期文章目录 (一)移动端安卓手机改造成linux服务器&Linux中安装软件踩坑历险记 (二)Debian Linux系统中安装oracle JDK1.8详细过程(arm64/aar ...

  5. Spring Boot 打包不同环境配置与 Shell 脚本部署

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 本篇和大家分享的是 Spring Boot 打包并结合 S ...

  6. Spring Boot 发布 jar 包转为 war 包秘籍。

    转载自 Spring Boot 发布 jar 包转为 war 包秘籍. Spring Boot是支持发布jar包和war的,但它推荐的是使用jar形式发布.使用jar包比较方便,但如果是频繁修改更新的 ...

  7. Spring Boot(17)配置文件解析

    Spring Boot(17)配置文件解析 前言 上一篇介绍了Spring Boot的入门,知道了Spring Boot使用"习惯优于配置"(项目中存在大量的配置,此外还内置了一个 ...

  8. spring boot 与 iview 前后端分离架构之开发环境基于docker的部署的实现(三十六)

    spring boot 与 iview 前后端分离架构之开发环境基于docker的后端的部署的实现(三十六) 公众号 基于docker的后端的部署 安装mysql数据库 创建数据库 安装redis 安 ...

  9. 面试官:为什么 Spring Boot 的 jar 可以直接运行

    转载自  面试官:为什么 Spring Boot 的 jar 可以直接运行 来源:Gormat's Notes fangjian0423.github.io/2017/05/31/springboot ...

最新文章

  1. Tomcat 的数据库连接池设置与应用
  2. 有效括号 python_python 有效的括号的实现代码示例
  3. python性能测试模块_python模块介绍- multi-mechanize 通用的性能测试工具
  4. eclipse 快捷键大全
  5. 使用Angular HTTP client对数据模型进行删除操作
  6. Spring 基于注解(annotation)的配置之@Qualifier注解
  7. 深入剖析Linux IO原理和几种零拷贝机制的实现
  8. 软件工程采取了哪些措施以保证最终能够交付给用户一个高质量、低成本的软件产品?
  9. dcmtk在PACS开发中的应用(基础篇) 作者:冷家锋 第三章 工作列表(Work List)(一)...
  10. MaxCompute实战之数据存储
  11. linux dosbox使用教程,dosbox安装及汇编教程 dosbox的常用快捷键
  12. C10K 和 C1000K 回顾
  13. CentOS8下安装wget、wget2
  14. 【Vue.js】Vue.js中常用的UI组件库和Vue Router
  15. 将mp4文件转换为flv
  16. 【JS】Proxy(代理)
  17. OpenCL简介-----OpenCL学习(一)
  18. android开发查漏补缺图
  19. plotly使用指南
  20. joda-time使用方法

热门文章

  1. php 状态模式,PHP设计模式(十九)—状态模式 (State Pattern)
  2. 分布式内存数据库---Redis数据库之(键)key
  3. ubuntu18.04的ifconfig输出没有ip地址
  4. 三十七、深入Vue.js组件Component(下篇)
  5. 六十二、Springboot中的配置文件和全注解
  6. Django项目知识点(二)
  7. sklearn(聚类和降维)
  8. 怎样在Linux系统中编译,Linux操作系统如何编译程序?
  9. linux mysql 指令无效_linux下安装mysql,mysql命令失效的原因
  10. 超实用!从0到1教你打造一个令人上瘾的聊天机器人