使用maven命令在mvn install -Ddev就可以完成变量替换,但是直接通过IDEA启动Springboot项目就替换不了变量
maven profiles资源变量替换失败
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
在Maven项目中,将profile中的配置信息替换为环境变量的步骤通常涉及到以下几个步骤:
-
创建一个名为
application.properties
的文件(如果不存在的话),在其中定义环境变量,例如:spring.datasource.username=${nacos.username} spring.datasource.password=${nacos.password}
-
将上述环境变量定义复制到
application.yml
或pom.xml
的相应位置(一般位于<build>
标签内)。 -
在项目的Maven profile目录下创建一个新的配置文件(例如:
spring.profiles.active.sample.config
),并在其内容如下:<profiles> <active> <id>sample</id> <configuration> <spring.datasource> <url>jdbc:mysql://localhost:3306/${spring.datasource.username}:${spring.datasource.password}?useSSL=false</url> <driver-class>com.mysql.jdbc.Driver</driver-class> </spring.datasource> </configuration> </active> </profiles>
-
在对应的Java源文件(例如:
src/main/resources/application.properties
)中,添加相应的依赖,以引用上述配置文件:// application.properties import org.springframework.context.annotation.Configuration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @Configuration public class AppConfig { // ... }
-
在
main
方法中运行应用,并使用--dev
参数启动一个热部署模式(也称为"runDev"模式):mvn run --dev
-
使用IDEA或其他集成开发环境(IDE)启动Spring Boot项目,然后按F5键刷新浏览器,你应该可以看到已经替换的环境变量在开发环境中显示了正确值。
注意:在实际操作中,由于 Maven 的动态配置特性,你需要确保将
application.properties
文件路径替换为实际的.properties
文件路径。同时,在 Spring Boot 项目中,为了使每个application.properties
对应的<spring.datasource>
对象生效,你可能需要在application.yml
或pom.xml
中提供不同的配置信息,比如端口、数据库用户名、密码等。具体的配置信息视项目具体情况进行调整。以下是一个简单的示例,展示了如何在
application.properties
和application.yml
文件之间进行配置转换:application.properties
文件:spring.datasource.username=nacos spring.datasource.password=nacos
application.yml
文件:spring: profiles: active: - sample
pom.xml
文件:<build> <plugins> <!-- ... --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.8.2</version> <executions> <execution> <phase>runtime</phase> <goals> <goal>standalone</goal> </goals> <configuration> <environmentVariables> <spring.datasource> <driverClassName>${spring.datasource.driver-class}</driverClassName> <url>${spring.datasource.url}</url> <username>${spring.datasource.username}</username> <password>${spring.datasource.password}</password> </spring.datasource> </environmentVariables> </configuration> </execution> </executions> </plugin> </plugins> </build>
在这个示例中,当运行
mvn run --dev
时,application.yml
文件中的配置将被读取并应用到项目的主配置文件中,而.properties
文件中的配置则不会被影响。这样,nacos.username
和nacos.password
变量就能通过application.properties
文件中的配置得到正确的值,而这些值在热部署模式下会生效。解决 无用评论 打赏 举报 编辑记录-
悬赏问题
- ¥50 怎么判断同步时序逻辑电路和异步时序逻辑电路
- ¥15 差动电流二次谐波的含量Matlab计算
- ¥15 Can/caned 总线错误问题,错误显示控制器要发1,结果总线检测到0
- ¥15 C#如何调用串口数据
- ¥15 MATLAB与单片机串口通信
- ¥15 L76k模块的GPS的使用
- ¥15 请帮我看一看数电项目如何设计
- ¥23 (标签-bug|关键词-密码错误加密)
- ¥66 比特币地址如何生成taproot地址
- ¥20 数学建模数学建模需要