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

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}:这可以在必须编写文字版本的位置使用,否则,特别是如果您在多模块构建模块间依赖关系。

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

而针对第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}

Maven属性(properties)标签的使用的更多相关文章

  1. 通过maven中properties标签定义spring版本号

    一 发现问题 在pom.xml中添加依赖时语法如下 <dependency>  <groupId>org.springframework</groupId>  &l ...

  2. maven中properties标签定义变量

    在pom.xml中添加依赖时语法如下 <dependency> <groupId>org.springframework</groupId> <artifac ...

  3. maven之---资源过滤 在java/main/resourse/*.xml ,*.properties引用maven属性${db.username}

    本文主要来源maven实战14.3 为了应对环境的变化,首先使用Maven属性将这个会发生变化的部分提取出来.在上一节的数据库配置中,连接数据库使用的驱动类,URL,用户名和密码都可能发生变化,因此使 ...

  4. Maven 属性

    maven 中使用 ${属性名} 来访问属性 内置属性 (maven 预定义,用户可以直接使用的属性) ${basedir}  表示项目根目录,即包含 pom.xml 文件的目录.同 ${projec ...

  5. Java开发学习(三十一)----Maven属性与版本管理

    一.属性 1.1 问题分析 如下图所示 你会发现,如果现在想更新Spring的版本,你会发现依然需要更新多个jar包的版本,这样的话还是有可能出现漏改导致程序出问题,而且改起来也是比较麻烦. 问题清楚 ...

  6. maven属性

    Maven内置了三大特性:属性.Profile和资源过滤来支持构建的灵活性. 内置属性:主要有两个常用内置属性 ${basedir}表示项目根目录,即包含pom.xml文件的目录 ${version} ...

  7. Maven属性、profile和资源过滤

    Maven的六类属性 内置属性 主要有两个常用内置属性:${basedir}项目的根目录(包含pom.xml文件的目录),${version}项目版本 POM属性 用户可以使用该属性引用POM文件中对 ...

  8. Maven 学习笔记-maven属性

    Maven有六类属性: 1)内置属性 主要有两个常用内置属性 ${basedir}:表示项目根目录,即包含pom.xml文件的目录: ${version}:表示项目版本: 2)POM属性 ${M2_H ...

  9. Maven学习笔记5:Maven属性、profile和资源过滤

    Maven的六类属性 内置属性 主要有两个常用内置属性:${basedir}项目的根目录(包含pom.xml文件的目录),${version}项目版本 POM属性 用户可以使用该属性引用POM文件中对 ...

随机推荐

  1. 解决AF3 诡异的页面显示问题

    使用AF3开发应用,发现有一个bug,在同一个view下面的不同页面切换后,这时候切换到别的view中的页面,然后再切换到上一个view下的页面,此时只要目标不是刚才前一个view中的最后显示页面就会 ...

  2. wamp 配置虚拟主机

    1.首先打开apache的配置文件httpd.conf,并去掉#Include conf/extra/httpd-vhosts.conf前面的#,启用虚拟主机功能 2.先把localhost配置好,免 ...

  3. UNIX环境编程学习笔记(6)——文件I/O之判断文件类型

    lienhua342014-09-01 1 文件类型 我们平时最常接触的文件类型有普通文件(regular file)和目录(di-rectory file),但是 UNIX 系统提供了多种文件类型: ...

  4. 内存管理 初始化(五)kmem_cache_init 初始化slab分配器(上)

    看了下kmem_cache_init,涉及到不同MIGRATE间的buddy system的迁移,kmem_cache的构建,slab分配器头的构建.buddy system的伙伴拆分. 对于SMP系 ...

  5. cordova开发跨平台应用问题随笔记

    iOS下频繁请求地理位置授权 做的某个cordova应用有用到geolocation插件,跑在iOS的时候发现app请求了一次授权,结果webkit还请求了一次授权,不但如此,webkit请求的格式还 ...

  6. 【转】Redis集群搭建与简单使用

    介绍安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. 两台虚拟机都是 CentOS ,一台 ...

  7. windows下WAMP php5.x redis扩展

    其解压到php的扩展目录ext下,在php.ini文件中扩展部分增加一行:extension=php_redis.dll 新增下载地下: php5.3 http://download.csdn.net ...

  8. WebBrowser中html元素如何触发winform事件

    这个问题来自论坛提问,对dom稍微了解的话还是比较简单的,只要注册一下事件就可以了. C#代码如下: using System;using System.ComponentModel;using Sy ...

  9. 【笔试面试】神马搜索C++程序猿电话面试

    面试时间:2015.07.15 预约时间:2015.07.14.电话面试前一天,会电话咨询你方面电话面试的时间. 面试环节: 无自我介绍(这是我面试这么多家公司碰到的第一次),直接面试内容. 问题1: ...

  10. c 编译和链接过程

    详解link  有 些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错 ...