












在Maven项目的pom.xml文件中,<properties>元素可以出现在两个地方:项目级别和profile级别。它们的作用和用法有所不同。
<properties>项目级别的 <properties> 定义了一些全局的属性,这些属性在整个项目中都可以使用,无论是否激活某个profile。这些属性通常用于存储一些不变的值,例如项目的版本号、常用的依赖项版本等。
示例:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-project</artifactId>
<version>1.0.0</version>
<properties>
<java.version>1.8</java.version>
<spring.version>5.3.10</spring.version>
</properties>
<!--...其他项目配置... -->
</project>
profile级别的 <properties>
profile级别的 <properties> 定义了一些特定于某个profile的属性。当你激活该profile时,这些属性将被使用;否则,它们不会生效。这些属性通常用于存储一些环境或条件特定的值,例如数据库连接字符串、服务器地址等。
示例:
<project>
<!--...其他项目配置... -->
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<db.url>jdbc:mysql://localhost:3306/mydb_dev</db.url>
<server.address>http://localhost:8080</server.address>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<db.url>jdbc:mysql://remote.db:3306/mydb_prod</db.url>
<server.address>https://www.example.com</server.address>
</properties>
</profile>
</profiles>
</project>
在上面的示例中,dev profile和prod profile都定义了不同的db.url和server.address属性。当dev profile被激活时,db.url将被设置为jdbc:mysql://localhost:3306/mydb_dev,而当prod profile被激活时,db.url将被设置为jdbc:mysql://remote.db:3306/mydb_prod。
<properties> 常用的激活方式有以下两种:默认激活:你可以在profile中使用 <activation><activeByDefault>true</activeByDefault></activation> 来指定某个profile是默认激活的。这意味着如果没有明确地激活或禁用其他profile,则这个profile会被自动使用。
示例:
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<db.url>jdbc:mysql://localhost:3306/mydb_dev</db.url>
</properties>
</profile>
</profiles>
命令行激活:你可以在执行Maven命令时使用 -P 或 --activate-profiles 选项来激活一个或多个profile。
示例:
mvn package -Pdevmvn package -Pdev,prodmvn package -P!dev<properties> 的注意点${property.name}的方式访问这些属性,例如: ${db.url} 或 ${server.address}。总的来说,项目级别的 <properties> 用于定义全局的、不变的属性,而profile级别的 <properties> 用于定义环境或条件特定的属性。这样可以使你的项目配置更加灵活和可维护。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。