关于springboot多环境的配置文件的两种写法以及项目打包时是否输出非active配置文件的问题

本文详细介绍SpringBoot项目中如何实现多环境配置,包括使用不同的配置文件和通过Maven配置来选择性打包特定环境的配置文件,适用于开发、测试、预发布和生产环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此处配置文件均以.properties文件为例,.yml配置文件写法有所区别。分环境配置文件命名可以写成两种格式:即src/main/resources下的application-dev.properties和src/main/resources/conf/dev下的application.properties。

方法一:配置文件为springboot-dev格式

直接创建在src/main/resources下
配置文件中内容包括数据库端口暂略。
application.properties中添加语句spring.profiles.active=@XXX@ (@XXX@:其中XXX与pom.xml中< profile>< properties>< XXX>dev< XXX>< /properties>< /profile>和 < includes>< include>application-${XXX}.properties< /include>< include>application.properties< /include> < /includes>需保持一致,下方pom.xml文件已标出)。
pom.xml文件(只粘贴与配置文件有关的部分):
①:打包多个配置环境(包括active和非active):

    <profiles>
       <profile>
        <id>dev</id>
        <properties>
            <XXX>dev</XXX>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>      
    </profile>
    
     <profile>
        <id>prepare</id>
        <properties>
            <XXX>prepare</XXX>
        </properties>     
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>          
    </profile>
    
    <profile>
        <id>test</id>
        <properties>
            <XXX>test</XXX>
        </properties>  
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>    
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <XXX>prod</XXX>
        </properties>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>   
    </profile>
</profiles>
 <build>
    <resources>
        <!--加载多环境配置-->
        <resource>
            <filtering>true</filtering>
            <directory>src/main/resources</directory>
        </resource>

    </resources>

    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <executable>true</executable>
            </configuration>
        </plugin>
    </plugins>
</build>

此时,完成多环境配置且打包时出现active和非active所有配置文件;
②:打包一个配置环境(只包括active):

<profiles>
   <profile>
        <id>dev</id>
        <properties>
            <XXX>dev</XXX>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>      
    </profile>

     <profile>
        <id>prepare</id>
        <properties>
            <XXX>prepare</XXX>
        </properties>     
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>          
    </profile>
    
    <profile>
        <id>test</id>
        <properties>
            <XXX>test</XXX>
        </properties>  
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>    
    </profile>

    <profile>
        <id>prod</id>
        <properties>
            <XXX>prod</XXX>
        </properties>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>   
    </profile>

</profiles>



    <build>
    <resources>
        <!--加载多环境配置-->
        <resource>
            <filtering>true</filtering>
            <directory>src/main/resources</directory>
           <excludes>
                <exclude>application-dev.properties</exclude>
                <exclude>application-prepare.properties</exclude>
                <exclude>application-test.properties</exclude>
                <exclude>application-prod.properties</exclude>
                <exclude>application.properties</exclude>
            </excludes>
        </resource>
       <resource>
            <filtering>true</filtering>
            <directory>src/main/resources</directory>
            <includes>
                <include>application-${XXX}.properties</include>
                <include>application.properties</include>
            </includes>
        </resource>

    </resources>

    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <executable>true</executable>
            </configuration>
        </plugin>
    </plugins>
</build>

与①相比,②主要通过 < excludes >< /excludes >先行找到所有配置文件,之后通过< include>< /include>添加需要的配置文件即可做到只打包想要的配置文件,非active则会同时被不打包;

方法二:配置文件为dev文件夹下的application.properties格式:
application.properties
此时,src/main/properties下的application.properties语句不变:spring.profiles.active=@XXX@,其与 < properties> < XXX>prod< /XXX>
< buildFinal>工程名< /buildFinal>< /properties>和< directory>src/main/resources/conf/${XXX}< /directory>相同。具体位置下方pom.xml文件已标出。
pom.xml对应的语句如下所示:

    <profiles>
      <profile>
        <id>dev</id>
        <properties>
            <XXX>dev</XXX>
            <buildFinal>工程名</buildFinal>
        </properties>            
    </profile>

    <profile>
        <id>test</id>
        <properties>
            <XXX>test</XXX>
            <buildFinal>工程名</buildFinal>
        </properties>
    </profile>

    <profile>
        <id>prepare</id>
        <properties>
            <XXX>prepare</XXX>
            <buildFinal>工程名</buildFinal>
        </properties>          
    </profile>

    <profile>
        <id>prod</id>
        <properties>
            <XXX>prod</XXX>
            <buildFinal>工程名</buildFinal>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
</profiles>

<build>
    <finalName>工程名</finalName>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
            <excludes>
                <exclude>application*.properties</exclude>
                <exclude>conf/dev/*</exclude>
                <exclude>conf/test/*</exclude>
                <exclude>conf/prepare/*</exclude>
                <exclude>conf/prod/*</exclude>
            </excludes>
        </resource>
        <resource>
            <directory>src/main/resources/conf/${XXX}</directory>
            <filtering>true</filtering>
            <includes>
                <include>application.properties</include>
                <include>conf/${XXX}/*</include>
            </includes>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version><!--$NO-MVN-MAN-VER$ -->
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <encoding>utf-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        
        <plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-surefire-plugin</artifactId>
			<version>2.18.1</version>
			<configuration>
  				<skipTests>true</skipTests>
			</configuration>
		</plugin>
    </plugins>
</build>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值