在项目开发中,我们会涉及到不同的环境,如开发、测试、集成和发布环境。因此在不同的环境上我们要灵活切换,如连接不同的数据库。Maven为了支持灵活的构建,内置了三大特性:属性、Profile和资源过滤。下面就结合不同版本jdk,不同环境数据进行介绍如何实现灵活的构建。
一、Maven属性
最常见的使用Maven属性的方式如下:
1.通过<properties>元素用户可以定义一个或者多个属性;
2.然后在POM的其它地方使用${属性名称}的方式引用属性;
Maven有6类属性:
1. 内置属性:主要两个常用内置属性:${basedir}项目根目录、${version}项目版本;
2. POM属性:使用该类属性引用POM文件中对应元素的值,如:${project.artifactId}对应了<project><artifactId>元素的值;
3. 自定义属性:如上示例,自定义属性:
<properties>
<my.prop>hello</my.prop>
</properties>
引用属性:${my.prop};
4. Settings属性:以POM属性同理,开头属性引用settings.xml文件中的XML元素,如:${settings.localRepository}指向用户本地仓库的地址;
5. Java系统属性:所有Java系统属性都可以使用Maven属性引用,如${user.home}指向用户目录;使用mvn help:system查看所有Java系统属性;
6. 环境变量属性:所有环境变量都可以使用以env.开头的Maven属性引用,如${env.JAVA_HOME}JAVA_HOME环境变量,使用mvn help:system查看所有环境变量;
一、Maven属性
最常见的使用Maven属性的方式如下:
1.通过<properties>元素用户可以定义一个或者多个属性;
2.然后在POM的其它地方使用${属性名称}的方式引用属性;
<properties>
<jdk.version>1.7</jdk.version>
</properties>
<profile>
<properties>
<maven.compiler.source>${jdk.version}</maven.compiler.source>
<maven.compiler.target>${jdk.version}</maven.compiler.target>
<maven.compiler.compilerVersion>${jdk.version}</maven.compiler.compilerVersion>
</properties>
</profile>
使用Maven属性的意义
—消除重复!Maven有6类属性:
1. 内置属性:主要两个常用内置属性:${basedir}项目根目录、${version}项目版本;
2. POM属性:使用该类属性引用POM文件中对应元素的值,如:${project.artifactId}对应了<project><artifactId>元素的值;
3. 自定义属性:如上示例,自定义属性:
<properties>
<my.prop>hello</my.prop>
</properties>
引用属性:${my.prop};
4. Settings属性:以POM属性同理,开头属性引用settings.xml文件中的XML元素,如:${settings.localRepository}指向用户本地仓库的地址;
5. Java系统属性:所有Java系统属性都可以使用Maven属性引用,如${user.home}指向用户目录;使用mvn help:system查看所有Java系统属性;
6. 环境变量属性:所有环境变量都可以使用以env.开头的Maven属性引用,如${env.JAVA_HOME}JAVA_HOME环境变量,使用mvn help:system查看所有环境变量;
C:\Users\chengxiang.peng.QUNARSERVERS\QunarGitSources\phone_spider_project>mvn help:system
[INFO] Scanning for projects...
Downloading: http://l-digging7.wap.cn8.qunar.com:8086/content/repositories/thirdparty/org/apache/maven/plugins/maven-metadata.xml
... ...
======