<!-- # Spring & Maven & Profiles --> <!-- spring-maven-profiles --> 主要是根据[这篇博客][1]上的方案进行配置,上面写的很详细,具体用法请看原文。 记一下遇到的问题,主要是由于 *profiles.profile.properties* 中定义的变量名不同,导致打包时一直没有配置文件。在 `<resources>` 使用变量(如 `/${profileActive}`)时要和在 *profiles.profile.properties* 中定义的一致。 下面是我在项目中使用的方法,以供参考: ## *pom.xml* ```xml <profiles> <profile> <id>dev</id> <properties> <profileActive>dev</profileActive> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>test</id> <properties> <profileActive>test</profileActive> </properties> </profile> <profile> <id>prod</id> <properties> <profileActive>prod</profileActive> </properties> </profile> </profiles> <build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> <resources> <resource> <directory>src/main/resources/</directory> <excludes> <exclude>dev/*</exclude> <exclude>prod/*</exclude> <exclude>test/*</exclude> </excludes> <includes> <include>banner.txt</include> </includes> </resource> <resource> <directory>src/main/resources/${profileActive}</directory> </resource> </resources> </build> ``` ## 目录接口  ## *application.yml* ```yaml spring: profiles: active: dev ``` ## 打包后的文件 打包时使用 `-P` 指定使用的 *profile* 。下面的命令是使用 *prod* 环境的 *profile* 。 ```shell mvn clean package -P prod ``` 在打包的 jar 文件的 `\BOOT-INF\classes\` 目录下可以看到加载进来的配置文件。  可以看到打包后仅保留了 *prod* 目录下的配置文件。 ## 参考 关于 *Spring Boot* 和 *Maven* 的 *profile*,这两篇文件介绍的很详细。 1. [maven(三)最详细的profile的使用][1] 2. [profile之springboot][2] [1]:https://blog.csdn.net/java_collect/article/details/83870215 (maven(三)最详细的profile的使用) [2]:https://blog.csdn.net/java_collect/article/details/83833686 (profile之springboot) Loading... 版权声明:本文为博主「佳佳」的原创文章,遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://www.liujiajia.me/2021/7/27/spring-maven-profiles 提交