springboot打war包时将外部配置文件打入到war包内

需求

客户适配信创改造,想把war包外的配置文件都放入到war内,方便迁移war和部署

使用maven-assembly-plugins插件

打包代码改造如下。在项目的pom.xml文件中加入maven-assembly-plugins插件如下所示

XML 复制代码
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <id>private-bhbank</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
            <configuration>
                <descriptors>
                    <descriptor>src/main/resources/xxx.xml</descriptor>
                </descriptors>
                <finalName>api</finalName>
            </configuration>
        </execution>
    </executions>
</plugin>

然后在Resources目录下新建xxx.xml文件,内容如下所示

XML 复制代码
<assembly
        xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    <id>private-bhbank</id>
    <includeBaseDirectory>false</includeBaseDirectory>
    <formats>
        <format>war</format>
    </formats>
    <fileSets>
        <!--将目录复制到指定位置-->
        <fileSet>
            <directory>target/classes/</directory>
            <outputDirectory>WEB-INF/classes</outputDirectory>
        </fileSet>
        <!--将单文件复制到指定位置-->
        <fileSet>
            <directory>config/</directory>
            <excludes>
                <exclude>application.properties</exclude>
            </excludes>
            <outputDirectory>WEB-INF/classes/config</outputDirectory>
        </fileSet>
        <!--将多文件复制到指定位置-->
        <fileSet>
            <directory>customerConfig/config-xxx</directory>
            <includes>
                <include>config.properties</include>
                <include>application.properties</include>
            </includes>
            <outputDirectory>WEB-INF/classes/config</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>customerConfig/config-xxx</directory>
            <includes>
                <include>log4j2.xml</include>
            </includes>
            <outputDirectory>WEB-INF/classes</outputDirectory>
        </fileSet>
    </fileSets>
    <dependencySets>
        <dependencySet>
            <useProjectArtifact>false</useProjectArtifact>
            <outputDirectory>WEB-INF/lib</outputDirectory><!-- 将scope为runtime的依赖包打包到lib目录下。 -->
            <excludes>
                  <!--排除某些包-->
                <exclude>${包的groupId}:${包的artifactId}</exclude>
            </excludes>
        </dependencySet>
    </dependencySets>
</assembly>

按照上面改造后就可以在打包时将项目根目录的指定文件或目录复制到war包内的指定位置

相关推荐
鲨鱼辣钊1 小时前
【FastAPI筑基-Day19】APScheduler定时任务全实战|自动执行、动态启停、后台常驻
java·spring·fastapi
学长毕业设计5 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端
东小西5 小时前
【SAA实战】第 3 篇 · 工具调用全攻略:把业务能力交给 Agent 自己调度
java·后端·spring
东小西6 小时前
【SAA实战】第 4 篇 · Agent 短期记忆:saver 让 Agent 跨轮记得住(threadId 隔离)
java·后端·spring
许彰午6 小时前
22-DataCenter报文序列化
java·低代码·架构·状态模式
2601_962065256 小时前
[MySQL] SQL优化之性能分析
java·sql·mysql
阿kun要赚马内6 小时前
MySQL 索引基础
后端·mysql
小范同学_6 小时前
JDK1.7 与 JDK1.8 HashMap 底层原理对比 + 数组并发扩容死循环详解
java·开发语言
码事漫谈6 小时前
我啥都能做,却不知道做什么了
后端
geovindu7 小时前
CSharp: 万年历
开发语言·后端·c#·.net