我正在使用Spring Boot,我在pom.xml
文件中看到了properties标签,但是我不理解它的含义和这个标签能做什么。
例如,properties
标签:
<properties>
<java.version>1.8</java.version>
</properties>
属性标签是什么意思?
我还可以在属性标签中添加什么?
属性标签(properties tag)的意义是什么?
来自Maven官方文档:
了解POM基础知识的最后一件必需品就是属性(Properties)。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的
<properties>
元素中设置。value的值可以用作${someVar}。
我还可以在属性标签中添加什么内容?
您可以添加所有需要在Maven POM文件中稍后重用的变量。
例如,下面的POM代码段将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>
参考资料:
<java.version>1.8</java.version>
是从哪里来的?因为在System.getProperties()
中看到:“**除非另有说明,否则更改标准系统属性可能会产生不可预测的结果。**” - Gerold Broser