如何在class文件中使用pom中profile级别的 <properties>
在 Java 代码中使用 pom.xml 中 profile 级别的 <properties>
,最常见和推荐的方式是通过 Maven Resource Filtering。这个过程涉及到以下步骤:
-
在 pom.xml 中定义 profile 和 properties:
<profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <db.url>jdbc:mysql://localhost:3306/mydb_dev</db.url> <server.address>localhost</server.address> </properties> </profile> <profile> <id>prod</id> <activation> <activeByDefault>false</activeByDefault> </activation> <properties> <db.url>jdbc:mysql://prod-db:3306/mydb_prod</db.url> <server.address>prod-server</server.address> </properties> </profile> </profiles>
-
在 src/main/resources 中创建一个.properties 文件:
database.url=${db.url} server.address=${server.address}
-
在 pom.xml 中配置资源过滤:
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
-
在 Java 代码中加载和使用属性:
-
使用
Properties
类:import java.io.InputStream; import java.util.Properties; //... Properties props = new Properties(); InputStream inputStream = getClass().getClassLoader().getResourceAsStream("application.properties"); props.load(inputStream); String databaseUrl = props.getProperty("database.url"); String serverAddress = props.getProperty("server.address");
-
使用 Spring 的
@Value
注解:import org.springframework.beans.factory.annotation.Value; //... @Value("${database.url}") private String databaseUrl; @Value("${server.address}") private String serverAddress;
-
-
这样,application.properties
文件中就会被替换为 prod
profile 中的属性值。无论你在哪个环境中构建和运行应用,Java 代码中使用的属性值都会根据当前激活的 profile 自动更新。