如何在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;
-
当你在开发环境中运行 Maven 构建时,dev profile 是默认激活的,所以 application.properties 文件中会被替换为 dev profile 中的属性值。如果你想在构建时使用 prod profile,可以在命令行中添加 -Pprod 参数,例如:mvn package -Pprod。 dev application.properties dev prod -Pprod mvn package -Pprod
-
这样,application.properties
文件中就会被替换为 prod
profile 中的属性值。无论你在哪个环境中构建和运行应用,Java 代码中使用的属性值都会根据当前激活的 profile 自动更新。
标签:
java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!