Maven属性(properties)标签的使用

原创 2018年04月15日 22:09:39
在命令行使用属性时,是-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}

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenyao1994/article/details/79954148

maven学习-properties标签的使用

UTF-8 1.0-SNAPSHOT 1.0-SNAPSHOT 1.0-SNAPSHOT 1.0-SNAPSHOT 3.2.4.RELEASE 2.3.15.1 ...
  • icoudsoft_saas
  • icoudsoft_saas
  • 2016-01-10 12:27:18
  • 1794

学习Maven之Properties Maven Plugin(编译时动态获取properties参数)

1.properties-maven-plugin是个什么鬼? 介绍前我们先看一个问题,比如我们有一个maven项目结构如下: 一般我们都把一些配置文件放到像 src/main/r...
  • bao19901210
  • bao19901210
  • 2016-09-01 16:29:48
  • 4854

maven内置属性(${} properties)

Maven内置了三大特性:属性、Profile和资源过滤来支持构建的灵活性。 Maven属性 事实上有六种类型的Maven属性: 内置属性:主要有两个常用内置属性——${basedir}表示项目根...
  • bao19901210
  • bao19901210
  • 2016-09-02 16:59:34
  • 10327

Maven中properties属性

Maven总共有6类属性,内置属性、POM属性、自定义属性、Settings属性、java系统属性和环境变量属性;   1.内置属性     两个常用内置属性 ${basedir} 或者 ${proj...
  • muzi__java
  • muzi__java
  • 2016-12-12 11:25:14
  • 312

maven pom.xml加载不同properties配置

1.pom.xml ===========================                                   test            ...
  • jbgtwang
  • jbgtwang
  • 2013-09-06 17:58:36
  • 22884

struts2标签引用Properties文件属性

Struts2的标签直接引用Properties文件的属性,我们可以把页面一些共用的属性,统一配置到一个Properties属性中,方便统一修改维护,但是,要引用时需要注意一些问题,本文就遇到的问题一...
  • u012382430
  • u012382430
  • 2017-02-13 17:30:09
  • 1394

maven的profile与properties文件

今天遇到一个问题,就是properties文件z
  • bloomzy
  • bloomzy
  • 2014-05-19 18:52:27
  • 3380

spring boot通过maven filter替换properties属性(多环境配置)

这两天项目到了差不多收尾了,想把各种环境配置通过maven filter在maven打包的时候就替换掉properties的配置。之前一直用${my.properies}的方式,打包了以后就是替换不掉...
  • q397739000
  • q397739000
  • 2016-11-04 18:07:16
  • 2070

maven资源文件.properties的引用

转载自:http://stonedeng.iteye.com/blog/1394882 maven资源文件引用 博客分类: maven maven 资源文件引用:  1、m...
  • wcy6340
  • wcy6340
  • 2014-10-21 14:02:28
  • 2121
收藏助手
不良信息举报
您举报文章:Maven属性(properties)标签的使用
举报原因:
原因补充:

(最多只允许输入30个字)