Maven为了支持构建的灵活性,内置了三大特性,即属性、Profile和资源过滤。本章将介绍这些特性。
比如${project.artifactId}就相应了<project><artifactId>元素的值,经常使用的POM属性包含:
<project>
...
<properties>
<my.prop>hello</my.prop>
</properties>
...
</project> 用户能够使用mvn help:system查看全部的Java系统属性。
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>account-email</artifacId>
<version>${project.version}</version>
</denpendency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>account-persist</artifacId>
<version>${project.version}</version>
</denpendency>
</dependencies>比如。我们在开发环境可能使用一套数据库配置,在线上环境可能使用另外一套数据库配置。相似的,对于缓存的配置、对于其它应用的RFC链接都可能在不同的生产环境下有不同的配置。
database.jdbc.driverClass=${db.driver}database.jdbc.connectionURL=${db.url}database.jdbc.username=${db.username}database.jdbc.password=${db.password}
<profiles>
<profile>
<id>dev</id>
<properties>
<db.driver>com.mysql.jdbc.Driver</db.driver>
<db.url>jdbc:mysql://192.168.1.100:3306/test</db.url>
<db.username>dev</db.username>
<db.password>dew-pwd</db.password>
</properties>
</profile>
</profiles> <resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resouces><testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
<filtering>true</filtering>
</testResource>
</testResouces><resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
<resource>
<directory>/src/main/sql</directory>
<filtering>false</filtering>
</resource>
</resouces>这里激活了id为dev profile。
能够在处理完之后的资源文件里看到。全部maven属性都已经被替换了过来。
除此之外,有些环境可能须要配置插件运行一些特殊的操作。或者使用特殊版本号的依赖,或者须要一个特殊的构件名称。为了能让构建在各个环境下方便地移植,Maven引入了profile的概念。profile可以在构建的时候改动POM的一个子集,或者加入额外的配置元素。用户可以使用非常多方式激活profile。以实现构建在不同环境下的移植。
比如,以下的命令激活了dev-x和dev-y两个profile:
<settings>
...
<activeProfiles>
<activeProfile>dev-x</activeProfile>
</activeProfiles>
</settings>也正是由于这个原因。一般不会在全局的settings.xml文件里加入profile。
<project>
<repositories></repositories>
<pluginRepositories></pluginRepositories>
<distributionManagement></distributionManagement>
<dependencies></dependencies>
<dependencyManagement></denpendencyManagement>
<modules></modules>
<properties></properties>
<reporting></reporting>
<build>
<plugins></plugins>
<defaultGoal></defaultGoal>
<resources></resources>
<testResources></testResources>
<finalName></finalName>
</build>
</project><project>
<repositories></repositories>
<pluginRepositories></pluginRepositories>
<properties></properties>
<project>版权声明:本文博主原创文章,博客,未经同意不得转载。
原文:http://www.cnblogs.com/lcchuguo/p/4882079.html