多模块SpringBoot项目激活basic profile失败问题咨询
Spring Boot默认仅扫描**启动模块(这里是admin)**的src/main/resources目录下的配置文件。你的application-basic.yml在infrastructure模块中,不在admin模块的默认扫描范围内,所以虽然日志显示激活了basic Profile,但实际找不到对应的配置文件,导致配置不生效。而application-dev.yml在admin模块内,所以能正常加载。
方法1:通过Maven依赖共享配置
在admin模块的pom.xml中添加对infrastructure模块的依赖,这样Maven打包时会将infrastructure模块的资源文件(包括配置文件)复制到admin模块的classpath下:
<dependency> <groupId>你的项目groupId</groupId> <artifactId>infrastructure</artifactId> <version>项目版本号</version> </dependency>
确保infrastructure模块的配置文件放在src/main/resources目录下,这样才能被正确复制。
方法2:通过配置导入其他模块的配置文件
在admin模块的application.yml中,使用spring.config.import直接导入infrastructure模块的application-basic.yml:
spring: profiles: active: basic config: import: classpath:/application-basic.yml
如果需要动态适配不同Profile,可以用占位符实现:
spring: profiles: active: ${ACTIVE_PROFILE:basic} config: import: classpath:/application-${spring.profiles.active}.yml
这种方式不需要额外依赖模块,只要infrastructure模块的配置文件能被加载到classpath(比如通过Maven的resources插件复制,或者启动时指定路径)。
方法3:启动时指定配置文件路径
启动项目时,通过命令行参数--spring.config.location指定包含infrastructure模块配置文件的路径:
java -jar admin/target/admin-1.0.0.jar --spring.config.location=classpath:/,../infrastructure/src/main/resources/
路径需要根据你的实际项目结构调整,确保能找到application-basic.yml。
内容的提问来源于stack exchange,提问作者Pulsar

