在pom.xml的Maven中,属性标签是什么意思?

13

我正在使用Spring Boot,我在pom.xml文件中看到了properties标签,但是我不理解它的含义和这个标签能做什么。

例如,properties标签:

   <properties>
        <java.version>1.8</java.version>
   </properties>

属性标签是什么意思?

我还可以在属性标签中添加什么?


这个 <java.version>1.8</java.version> 是从哪里来的?因为在 System.getProperties() 中看到:“**除非另有说明,否则更改标准系统属性可能会产生不可预测的结果。**” - Gerold Broser
1个回答

18

属性标签(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>

参考资料:

Maven Pom Properties


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接