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可以省略
View Code

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>
View Code

而settings.xml中可以声明的元素很少,只支持以下几个

技术分享图片
<project>
    <repositories></repositories>
    <pluginRepositories></pluginRepositories>
    <properties></properties>
</project>
View Code

(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>
View Code

 使用profile包裹其它元素声明与直接使用这些元素声明并无二致


 






以上是关于maven属性资源过滤profile不同环境构建项目的主要内容,如果未能解决你的问题,请参考以下文章

maven pom profiles

maven的profile构建不同环境打包

Maven实战读书笔记:Maven灵活构建

maven学习利用Profile构建不同环境的部署包

使用maven profile 构建不同环境引用不同的值

Maven里面多环境下的属性过滤(配置)