使用maven命令在mvn install -Ddev就可以完成变量替换,但是直接通过IDEA启动Springboot项目就替换不了变量

使用maven命令在mvn install -Ddev就可以完成变量替换,但是直接通过IDEA启动Springboot项目就替换不了变量

关注引自免费微信小程序:皆我百晓生
在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 文件中的配置得到正确的值,而这些值在热部署模式下会生效。