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

相关推荐
Mahir085 小时前
Spring 循环依赖深度解密:从问题本质到三级缓存源码级解析
java·后端·spring·缓存·面试·循环依赖·三级缓存
RyFit6 小时前
SpringAI 常见问题及解决方案大全
java·ai
石山代码6 小时前
C++ 内存分区 堆区
java·开发语言·c++
绝知此事6 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
无风听海6 小时前
C# 隐式转换深度解析
java·开发语言·c#
一只大袋鼠7 小时前
Git 进阶(二):分支管理、暂存栈、远程仓库与多人协作
java·开发语言·git
德思特8 小时前
从 Dify 配置页理解 RAG 的重要参数
java·人工智能·llm·dify·rag
YOU OU8 小时前
Spring IoC&DI
java·数据库·spring
один but you9 小时前
从可变参数到 emplace:现代 C++ 性能优化的核心组合
java·开发语言
IT_陈寒9 小时前
Redis缓存击穿把我整不会了,原来还有这手操作
前端·人工智能·后端