【问题标题】:What does properties tag mean in pom.xml maven?pom.xml maven中的properties标签是什么意思?
【发布时间】:2021-04-18 02:51:44
【问题描述】:
我在 Spring Boot 中工作,我在 pom.xml 文件中看到了 properties 标记,但我不明白这是什么意思,我们可以在其中做什么标记。
properties 标记,例如
<properties>
<java.version>1.8</java.version>
</properties>
属性标签是什么意思?
我还可以在 properties 标签中添加什么?
【问题讨论】:
标签:
spring-boot
maven
pom.xml
【解决方案1】:
属性标签是什么意思?
来自官方 Maven 文档:
属性是理解 POM 基础知识的最后一个必要部分。 Maven 属性是值占位符,类似于 Ant 中的属性。通过使用符号 ${X},可以在 POM 中的任何位置访问它们的值,其中 X 是属性。或者它们可以被插件用作默认值,例如:
在您的情况下,您已将属性定义为 java 的版本。
现在这个属性(java.version)可以在maven pom文件中重复使用。
来自官方 Maven 文档:
它们有五种不同的风格:
-
env.X:以“env”作为变量的前缀。将返回 shell 的环境变量。例如,${env.PATH} 包含 PATH
环境变量。注意:虽然环境变量本身是
Windows 上不区分大小写,属性查找区分大小写。
换句话说,虽然 Windows shell 返回相同的值
%PATH% 和 %Path%,Maven 区分 ${env.PATH} 和
${env.Path}。环境变量的名称被标准化为所有
为了可靠性,大写。
-
project.x:POM 中点 (.) 表示的路径将包含相应元素的值。例如:
1.0 可通过以下方式访问
${project.version}。
-
settings.x:settings.xml 中以点 (.) 表示的路径将包含相应元素的值。例如:
false 可通过以下方式访问
${settings.offline}。
-
Java 系统属性:所有可通过 java.lang.System.getProperties() 访问的属性都可作为 POM 属性使用,
比如 ${java.home}。
-
x:在 POM 中的元素内设置。 value 的值可以用作
${someVar}。
我还可以在属性标签中添加什么?
您可以在 maven pom 文件中添加以后需要重用的所有变量。
例如POM sn-p 下面重用了jackson.version 4次。
<properties>
<jackson.version>2.10.2</jackson.version>
<dropwizard.version>2.0.1</dropwizard.version>
<websocket.version>1.4.0</websocket.version>
<apachehttp.version>4.5.10</apachehttp.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${apachehttp.version}</version>
</dependency>
<dependency>
<groupId>org.java-websocket</groupId>
<artifactId>Java-WebSocket</artifactId>
<version>${websocket.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependencies>
参考资料:
Maven Pom Properties