maven属性资源过滤profile不同环境构建项目
Posted Prince_Chang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven属性资源过滤profile不同环境构建项目相关的知识,希望对你有一定的参考价值。
maven针对不同环境构建项目
maven使用属性、profile及资源过滤支持针对不同环境构建项目
maven属性
一、maven共有六类属性
1、最常见的是自定义属性,即在pom文件里通过<properties>元素定义的属性
2、环境变量属性,可以使用env.引用,可以使用mvn help:system查看所有的环境变量
java.env=${env.JAVA_HOME}
3、系统属性,也可以使用mvn help:system查看所有的系统属性
${user.home}指向了用户目录,即C:\Users\Administrator
user.home=${user.home}
4、setting属性
localRepository=${settings.localRepository}
5、maven内置属性
${basedir}表示根目录
project.basedir=${basedir}
${version}表示项目版本
project.version=${version}
6、pom属性
源码目录
sourceDirectory=${project.build.sourceDirectory}
测试类源码目录
testSourceDirectory=${project.build.testSourceDirectory}
构建目录
directory=${project.build.directory}
构建后class所在的目录
outputDirectory=${project.build.outputDirectory}
构建后测试类class所在的目录
testOutputDirectory=${project.build.testOutputDirectory}
项目组Id
groupId=${project.groupId}
构件Id
artifactId=${project.artifactId}
项目版本
version=${project.version}
构建后jar包或war包的名称,默认为${project.artifactId}-${project.version}
finalName=${project.build.finalName}
project可以省略
profile
(1) profile在pom.xml或settings.xml中都可以声明
pom.xml中的profile只对当前项目有效,用户settings.xml中的profile对该用户所有的maven项目有效,全局settings.xml中的profile对本机上所有的maven项目有效
由于pom.xml中的profile能随着pom.xml一起提交到代码仓库中、被安装到本地仓库中、被部署到远程仓库中,所以pom.xml中的frofile可以声明的元素很多,如下所示:
<project> <repositories></repositories> <pluginRepositories></pluginRepositories> <distributionManagement></distributionManagement> <dependencies></dependencies> <dependenyManagement></dependenyManagement> <modules></modules> <properties></properties> <reporting></reporting> <build> <plugins></plugins> <defalutGoal></defalutGoal> <resources></resources> <testResources></testResources> <finalName></finalName> </build> </project>
而settings.xml中可以声明的元素很少,只支持以下几个
<project> <repositories></repositories> <pluginRepositories></pluginRepositories> <properties></properties> </project>
(2)demo
<project> ... <profiles> <profile> <id>dev</id> <properties> <db.url>jdbc:mysql://localhost:3306/dev</db.url> <db.username>root</db.username> <db.password>root</db.password> </properties> </profile> <profile> <id>test</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <db.url>jdbc:mysql://localhost:3306/test</db.url> <db.username>test</db.username> <db.password>test</db.password> </properties> </profile> </profiles> </project>
使用profile包裹其它元素声明与直接使用这些元素声明并无二致
以上是关于maven属性资源过滤profile不同环境构建项目的主要内容,如果未能解决你的问题,请参考以下文章