首先,在正式项目放到生产环境中时,可能会有相关需求,就是将部分配置文件不打包到项目的启动jar包中,方便运维同事修改配置文件中的一些敏感配置,比如数据库连接,数据库用户名密码等。这里我们首先要来说下SpringBoot项目在加载配置文件时,读取配置文件的优先级顺序。是先搜索可执行jar包同级目录下是否存在application.yml(或者application.properties)文件,再搜索jar内部路径中的application.yml(或者application.properties)文件。(具体在下一篇博客中阐述加载配置的相关原理)所以,要实现以上需求,可直接通过maven打包的配置来控制是否将配置文件打包进可执行jar包中。
先来看看我的项目的配置的具体目录结构:
我想将除yml文件以外的其他配置项在打包时保留在可执行jar包中,可以进行如下配置:
<build>
<finalName>iaa-party-service</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>mapper/**</include>
<include>log4j.properties</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
各个标签说明:
- <finalName>标签:此标签是对项目打包后的jar包的名称进行定义,如图中所示,通过maven打包出来的jar包为iaa-party-service.jar;
- <resources>标签:该标签内是定义打包项目中的一些文件的设置(文件路径集合);
- <resource>标签:具体的某个源路径中的内容
- <directory>标签:是指定处理的文件夹路径,上图中就表示需要处理的路径为项目的resources目录;
- <includes>标签:指定打包时在对应目录下的对应内容(集合)。
- <include>标签:指定具体打包进jar包中的内容,上图所示表示,将resources目录下的mapper目录中的所有文件,以及log4j.properties文件打包进可执行jar包中;
执行package命令后,打包好的jar包,通过反编译软件反编译后可看到jar包中的内容
这样就很方便的达到我们将一些重要的配置文件内容提取出来的需求。
版权声明:本文为weixin_41843053原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。