• Maven属性(properties)标签的使用


    在命令行使用属性时,是-D,比如:mvn -Dinput=test

    引用官方的说明https://maven.apache.org/pom.html#Properties

    Properties

    属性是了解POM基础知识的最后一个要素。Maven属性是值占位符,如Ant中的属性。它们的值可以通过使用符号${X}在POM中的任何位置访问,其中X是属性。

    他们有五种不同的风格:

    1、env.X:使用“env”来定义变量。将返回shell的环境变量。例如,${env.PATH}包含PATH环境变量。

    注意:虽然环境变量本身在Windows上不区分大小写,但查找属性区分大小写。换句话说,虽然Windows shell为%PATH%%Path%返回相同的值,但Maven区分${env.PATH}${env.Path}。对于Maven 2.1.0,为了可靠性,环境变量的名称被归一化为所有大写

    2、project.x:POM中的点(.)记号路径将包含相应元素的值。例如:可以通过${project.version}访问<project><version>1.0</version></project>

    3、settings.xsettings.xml中的点(.)标注路径将包含相应的元素的值。例如:<settings><offline>false</offline></ settings>可通过${settings.offline}访问。

    4、Java系统属性:可通过java.lang.System.getProperties()访问的所有属性都可用作POM属性,如${java.home}

    5、x:在POM中的<properties />元素中设置。<properties><someVar>value</someVar></properties>的值可以用作${someVar}

    而在第2点中访问pom.xml文件的属性时,其实还有一些内置的变量,如下:

    ${project.basedir}:这引用了module/project的根文件夹(当前pom.xml文件所在的位置),还可以简化的写法:${basedir}

    以上更多用法参考:http://maven.apache.org/ref/3.5.0/maven-model-builder/#Model_Interpolation

    ${project.build.directory}:这表示默认的target文件夹。

    ${project.build.outputDirectory}:默认情况下表示target/classes文件夹。

    ${project.build.testOutputDirectory}:这表示默认的target/test-classes文件夹。

    ${project.build.sourceDirectory}:这表示默认情况下src/main/java文件夹。

    ${project.build.testSourceDirectory}:这表示默认情况下src/test/java文件夹。

    ${project.build.finalName}:默认情况下定义为${project.artifactId}-${project.version}

    ${project.version}:这可以在必须编写文字版本的位置使用,否则,特别是如果您在多模块构建模块间依赖关系。

    以上更多用法参考:http://maven.apache.org/pom.html#The_Super_POM

    ${settings.localRepository}:它引用了本地存储库的位置。这是默认的${home}/.m2/repository

    以上更多用法参考:http://maven.apache.org/pom.html#Properties

    以上参考:https://cwiki.apache.org/confluence/display/MAVEN/Maven+Properties+Guide

    而针对第5点时应该是项目上最多使用的,比如以下为项目实践的简单pom.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.jsoft.test</groupId>
        <artifactId>test-maven</artifactId>
        <version>1.0-SNAPSHOT</version>
        <profiles></profiles>
        <properties>
            <test.uuid>123</test.uuid>
            <jdbc.driverClassName>com.mysql.jdbc.Driver</jdbc.driverClassName>
            <jdbc.url>jdbc:mysql://localhost/stock?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;autoReconnect=true</jdbc.url>
            <jdbc.username>root</jdbc.username>
            <jdbc.password>123456</jdbc.password>
            <jdbc.validationQuery>SELECT 1 + 1</jdbc.validationQuery>
        </properties>
        <build>
            <resources>
                <resource>
                    <filtering>true</filtering>
                    <directory>${project.basedir}/src/main/resources/${test.uuid}</directory>
                    <includes>
                        <include>*.properties</include>
                    </includes>
                </resource>
            </resources>
        </build>
    </project>

    可以看出只要在properties节点配置了自定义属性即可在任意地方使用,形式如${x}。

    当然除了在pom.xml使用自定义属性外,还可以在properties文件中使用,比如项目文件src/main/resources/jdbc.properties的文件,写入如下所示:

    jdbc.driverClassName=${jdbc.driverClassName}
    jdbc.url=${jdbc.url}
    jdbc.username=${jdbc.username}
    jdbc.password=${jdbc.password}
    jdbc.validationQuery=${jdbc.validationQuery}
  • 相关阅读:
    linux系统sed命令输出匹配字符的行及其后若干行
    linux系统中统计每一行的字符数
    linux系统中sed复合命令
    [转载]J2EE程序员应该掌握的Linux系统的知识
    [转载]Linuz常用命令(1)
    [转载]J2EE程序员应该掌握的Linux系统的知识
    [转载]Linuz常用命令(1)
    [转载]Oracle常用函数大全
    [转载]Linuz常用命令(1)
    [转载]Linux常用命令(2)
  • 原文地址:https://www.cnblogs.com/EasonJim/p/6815365.html
Copyright © 2020-2023  润新知