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包内的指定位置

相关推荐
只会cv的前端攻城狮34 分钟前
Elpis-Core — 融合 Koa 洋葱圈模型实现服务端引擎
前端·后端
codetown37 分钟前
2026年Zig编程语言权威指南:从系统级底层架构到现代软件工程实践
后端·程序员
cg332 小时前
cc-connect,十分钟帮你把 claude code 连接到微信,飞书,钉钉等等平台
后端·openai
用户1427868669322 小时前
Java多态的底层真相:JVM到底怎么知道该调哪个方法?(面试高频)
后端
dkbnull2 小时前
深入理解Spring两大特性:IoC和AOP
spring boot
初次攀爬者3 小时前
RabbitMQ的消息模式和高级特性
后端·消息队列·rabbitmq
摸鱼的春哥3 小时前
惊!黑客靠AI把墨西哥政府打穿了,海量数据被黑
前端·javascript·后端
考虑考虑3 小时前
JDK25模块导入声明
java·后端·java ee
_小马快跑_4 小时前
Java 的 8 大基本数据类型:为何是不可或缺的设计?
java
想用offer打牌5 小时前
高并发下如何保证接口的幂等性
后端·面试·状态机