幫助命令
mvn help:active-profiles
mvn help:all-profiles
maven屬性
- maven有6類屬性,都可以直接在pom中使用务甥,和profile沒有關(guān)系供常,profile是為了靈活構(gòu)建而產(chǎn)生的楔脯,也就是說通過profile為屬性設置不同的值呵扛,并設置profile啟用開關(guān)沥阳,當某個profile啟用后踏幻,該profile中配置的屬性或者插件信息都會在當前項目中起作用谱醇。
- 下面是講解profile種類和如何開啟漱牵。想知道6類屬性可以查看maven靈活構(gòu)建夺蛇。
profile種類
- 根據(jù)需求profile可以在以下位置中聲明。在不同位置聲明的profile中可以使用屬性元素種類不一樣酣胀。
- pom.xml :當前項目生效
- 用戶settings.xml :用戶目錄 .m2/settings.xml,當前機器下該用戶的所有項目有效
- 全局settings.xml :conf/settings.xml當前機器上所有項目
開啟資源過濾
資源文件過濾
- 使用插件maven-resources-plugin
- 對src/main/resources目錄下文件開啟過濾
<build>
<resources>
<resource>
<directory>{project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
<!-- 對sql資源文件關(guān)閉資源過濾-->
<resource>
<directory>{project.basedir}/src/main/sql</directory>
<filtering>false</filtering>
</resource>
</resources>
...
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>${maven-resources-plugin.version}</version>
<configuration>
<encoding>${project.encoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
web資源文件過濾
激活profile6種方式
- 定義在settings中的profile對所有項目有效刁赦,在pom中的只對當前項目有效
<profiles>
<profile>
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
</properties>
</profile>
<!--通過系統(tǒng)屬性激活娶聘,當系統(tǒng)中存在某個屬性或?qū)傩缘扔谀硞€值時激活-->
<profile>
<id>prod</id>
<activation>
<property>
<name>server</name>
<value>x</value>
</property>
</activation>
<properties>
<profiles.active>prod</profiles.active>
</properties>
</profile>
<profile>
<id>jdk1.6</id>
<activation>
<property>
<name>jdk1.6</name>
</property>
</activation>
<properties>
<java.version>1.6</java.version>
</properties>
</profile>
</profiles>
- 命令行
mvn -Pdev,test //激活dev、test profile
-
- 系統(tǒng)屬性激活
- 如果系統(tǒng)屬性不存在可以通過mvn設置系統(tǒng)屬性甚脉。(不是環(huán)境變量)
mvn -Djdk1.6 -Dserver=x //激活prod丸升、jdk1.6 profile
- javap -v class類 可以查看編譯后class文件的使用的jdk版本,本例中對應50
- mvn help:system 查看系統(tǒng)屬性和環(huán)境變量
-
- settings文件顯示激活
- 表示其配置的profile對所有的項目都處于激活狀態(tài)宦焦。
<profiles>
<profile>
.....
<id>artifactory</id>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artifactory</activeProfile>
</activeProfiles>
- 操作系統(tǒng)環(huán)境激活
- 文件存在與否激活
<profiles>
<profile>
<id>dev</id>
<activation>
<file>
<missing>x.properties</missing>
<exists>y.properties</exists>
</file>
</activation>
<properties>
.....
</properties>
</profile>
<profiles>
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profiles.active>dev</profiles.active>
</properties>
</profile>
<profiles>
- 注:Pom中如果有任何 一個profile通過非“默認激活”方式激活了发钝,那么所有默認激活的profile配置都會失效。
案例
- 需求:項目中除了使用中央倉庫的依賴還會用到公司私服上的依賴波闹。想法:中央倉庫依賴配置到阿里下載酝豪,公司的依賴配置到公司私服上下載。
- 設計:在settings.xml中配置阿里鏡像代理中央倉庫的依賴精堕。配置profile來滿足公司自己依賴的下載孵淘。
<settings>
<mirrors>
<!-- 代理central遠程倉庫 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<repositories>
<repository>
<id> maven2 repository snapshots</id>
<name> maven2 repository-snapshots</name>
<url>公司私服地址</url>
</repository>
<repository>
<id> maven2 repository releases</id>
<name>maven2 repository-releases</name>
<url>公司私服地址</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id> maven2 plugin repository releases</id>
<name> maven2 repository-releases</name>
<url>公司私服地址</url>
</pluginRepository>
</pluginRepositories>
<id>artifactory</id>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artifactory</activeProfile>
</activeProfiles>
</settings>
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者