maven-靈活的構建

爲了適應不同環境的構建,maven爲支持靈活的構建,內置了屬性、profile和資源過濾3大屬性

一、Maven屬性

maven提供了多種屬性,如用於消除重複的<properties>元素,主要包括六種:

1、內置屬性

主要有兩個,${basedir}:項目根目錄,包含pom.xml文件的目錄;${version}:項目版本

2、POM屬性

用於引用pom文件中對應元素的值,如${project.artifactId}對應<project><artifactId>元素的值,常用POM屬性如下:

${project.build.sourceDirectory}:項目的主源碼目錄,默認爲src/main/java/
${project.build.testSourceDirectory}:項目的測試源碼目錄,默認爲src/test/java/
${project.build.directory}:項目的構建輸出目錄,默認爲target/
${project.outputDirectory}:項目主代碼編譯輸出目錄,默認爲target/classes/
${project.testOutputDirectory}:項目測試代碼編譯輸出目錄,默認爲target/test-classes/
${project.groupId}:項目的groupId
${project.artifactId}:項目的artifactId
${project.version}:項目的version,與${vesion}等價
${project.build.finalName}:項目打包輸出文件的名稱,默認爲${project.artifactId}-${project.version}
這些屬性對應了一個pom元素,有些屬性的默認值是在超級pom中定義的。

3、自定義屬性

在pom的<properties>元素下自定義Maven屬性,如<properties><my.prop>hello</my.prop></properties>,可在pom中使用${my.prop}來引用其值

4、Settings屬性

和pom屬性同理,使用以settings.開頭的屬性引用setttings.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查看時所有java系統屬性

如maven-surefire-plugin提供了reportsDirectory參數來指定測試報告生成的目錄

二、資源過濾

使用maven屬性將會變化(主要針對資源配置文件)的部分抽取出來,然後在不同環境中,使用不同配置的profile配置,以此來應對環境的變化。不同環境的profile,激活後

就對應不同的配置資源文件。

資源配置文件是有maven-resources-plugin插件處理的,默認行爲是將主資源文件和測試資源文件編譯輸出到相應的目錄中去。

開啓資源目錄過濾:需要在resources/resouce下添加<filtering>true</fitering>即可。

激活profile文件:mvn clean install -P+profile配置的id

三、profile

爲了能讓構建在各個環境中方便的移植,引入profile。profile能夠在構建時修改pom元素的一個子集,或增加額外的配置元素。

profile的激活,具體自己搜索:

1、命令行激活:mvn clean install -Pdev-x,dev-y,mvn命令行參數—P加上profile的id來激活profile,多個id以,分割

2、settings文件顯示激活,配置在settings.xml文件中的active-Profiles元素,表示其配置的Profile對所有項目都處於激活狀態

3、系統屬性激活,配置當某系統屬性存在時或某系統屬性爲某值時,激活profile

4、操作系統激活,根據操作系統環境自動激活相應的profile,配置在profiles/profile/activation中

5、文件存在與否激活

6、默認激活

profile的種類:

pom.xml:pom.xml中聲明的profile只對當前目錄有效

用戶setttings.xml:用戶目錄下.m2/settings.xml中的profile對本機上該用戶所有maven項目有效

全局settings.xml:maven安裝目錄下conf/settings.xml中的profile對本機上所有的maven項目有效

profiles.xml:僅針對maven2

四、web資源過濾

web資源文件指src/main/webapp/目錄下的文件,打成war後,不會位於應用程序的classpath中,也可通過profile文件的方式解決,如改變css文件的樣式。

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章