1. 程式人生 > >maven屬性、資源過濾、profile、不同環境構建項目

maven屬性、資源過濾、profile、不同環境構建項目

定義 倉庫 div sources code ngs demo 資源過濾 close

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、不同環境構建項目