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 将配置文件分离相关推荐
- spring boot 打包jar,jar没有主目录清单
(1)spring boot 打包jar 如果有不对的还请指点,知道自己技术部怎么样,第一次写,写的有点乱 理解一下 1.在POM.xml文件下添加如下代码:注意:version.confi ...
- Spring Boot 打包分离依赖 JAR 和配置文件
Spring Boot 打包分离依赖 JAR 和配置文件 2018年07月11日 15:17:09 <span class="read-count">阅读数 6145& ...
- Spring Boot打包成执行jar后获取classpath下文件异常解决
Spring boot 打包后 jar文件,IDEA调试时候没什么问题,可是打包成执行jar后发现有异常抛出: class path resource [1.jpg] cannot be resolv ...
- (五)Debian Linux中部署Spring Boot + Vue的前后端分离项目详细过程(arm64/aarch64架构下)
专题系列往期文章目录 (一)移动端安卓手机改造成linux服务器&Linux中安装软件踩坑历险记 (二)Debian Linux系统中安装oracle JDK1.8详细过程(arm64/aar ...
- Spring Boot 打包不同环境配置与 Shell 脚本部署
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 本篇和大家分享的是 Spring Boot 打包并结合 S ...
- Spring Boot 发布 jar 包转为 war 包秘籍。
转载自 Spring Boot 发布 jar 包转为 war 包秘籍. Spring Boot是支持发布jar包和war的,但它推荐的是使用jar形式发布.使用jar包比较方便,但如果是频繁修改更新的 ...
- Spring Boot(17)配置文件解析
Spring Boot(17)配置文件解析 前言 上一篇介绍了Spring Boot的入门,知道了Spring Boot使用"习惯优于配置"(项目中存在大量的配置,此外还内置了一个 ...
- spring boot 与 iview 前后端分离架构之开发环境基于docker的部署的实现(三十六)
spring boot 与 iview 前后端分离架构之开发环境基于docker的后端的部署的实现(三十六) 公众号 基于docker的后端的部署 安装mysql数据库 创建数据库 安装redis 安 ...
- 面试官:为什么 Spring Boot 的 jar 可以直接运行
转载自 面试官:为什么 Spring Boot 的 jar 可以直接运行 来源:Gormat's Notes fangjian0423.github.io/2017/05/31/springboot ...
最新文章
- Tomcat 的数据库连接池设置与应用
- 有效括号 python_python 有效的括号的实现代码示例
- python性能测试模块_python模块介绍- multi-mechanize 通用的性能测试工具
- eclipse 快捷键大全
- 使用Angular HTTP client对数据模型进行删除操作
- Spring 基于注解(annotation)的配置之@Qualifier注解
- 深入剖析Linux IO原理和几种零拷贝机制的实现
- 软件工程采取了哪些措施以保证最终能够交付给用户一个高质量、低成本的软件产品?
- dcmtk在PACS开发中的应用(基础篇) 作者:冷家锋 第三章 工作列表(Work List)(一)...
- MaxCompute实战之数据存储
- linux dosbox使用教程,dosbox安装及汇编教程 dosbox的常用快捷键
- C10K 和 C1000K 回顾
- CentOS8下安装wget、wget2
- 【Vue.js】Vue.js中常用的UI组件库和Vue Router
- 将mp4文件转换为flv
- 【JS】Proxy(代理)
- OpenCL简介-----OpenCL学习(一)
- android开发查漏补缺图
- plotly使用指南
- joda-time使用方法
热门文章
- php 状态模式,PHP设计模式(十九)—状态模式 (State Pattern)
- 分布式内存数据库---Redis数据库之(键)key
- ubuntu18.04的ifconfig输出没有ip地址
- 三十七、深入Vue.js组件Component(下篇)
- 六十二、Springboot中的配置文件和全注解
- Django项目知识点(二)
- sklearn(聚类和降维)
- 怎样在Linux系统中编译,Linux操作系统如何编译程序?
- linux mysql 指令无效_linux下安装mysql,mysql命令失效的原因
- 超实用!从0到1教你打造一个令人上瘾的聊天机器人