`
wanxiaotao12
  • 浏览: 472385 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Maven 属性、资源过滤和profile

 
阅读更多

为了构建的灵活性, Maven支持属性、资源过滤和Profile。

 

一、属性
1.属性的引用
属性的引用很简单,如:${属性名}

 


2.属性的分类
(1)内置属性:
常用的内置属性有:
${basedir} 表示项目根目录 
${version} 表示项目版本


(2)POM属性
用户可使用该类属性引用POM文件中的对应元素的值。如:${project.artifacctId}就对应了<project><artifactId>元素的值。

(3)自定义属性
用户可在<properties>元素下自定义Maven属性,如:

 

 

 

Xml代码  收藏代码
  1. <span style="font-size: medium;"><project>  
  2.     ...  
  3.     <properties>  
  4.         <my.prop>hello</my.prop>  
  5.     </properties>  
  6.     ...  
  7. </project></span>  

 

(4)Settings属性:
与POM属性类似,用户可使用settings开头的属性引用settings.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查看所有的环境变量 。

 

 

 

二、资源过滤
1.资源过滤
  不同的环境中需要的构件可能会有区别,如开发环境、测试环境以及正式环境的数据库配置不同。Maven推荐针对不同的环境生成不同的构件。
为了对应环境的变化,首先要使用Maven属性将这些将会发生变化的部分提取出来。如数据库配置可写成:

database.jdbc.driver = ${db.driver}
database.jdbc.url=${db.url}
database.jdbc.username = ${db.username}
database.jdbc.passwrd = ${db.password}

 


  这里用到了四个Maven自定义属性。我们可在profile元素中定义这些属性。详见下节。

  默认情况下,Maven只会解析POM.XML中的属性引用。也就是说如果上面的数据库配置放在resources目录下,Maven默认不会解析。
  资源文件的处理实际是maven-resources-plugin负责,它的默认行为只是将项目主资源文件复制到主代码编译输出目录中,将测试资源文件复制到测试代码编译输出目录。可通过配置,使该插件解析资源文件中的Maven属性,即开启资源过滤,如:

Xml代码  收藏代码
  1. <span style="font-size: medium;"><project>  
  2.     ...  
  3.     <build>  
  4.         <resources>  
  5.             <resource>  
  6.                 <directory>src/main</directory>  
  7.                 <filtering>true</filtering>  
  8.             </resource>  
  9.             <resource>  
  10.                 <directory>src/main/sql</directory>  
  11.                 <filtering>false</filtering>  
  12.             </resource>  
  13.         </resources>  
  14.         <testResources>  
  15.             <testResource>  
  16.                 <directory>...</directory>  
  17.                 <filtering>...</filtering>  
  18.             </testResource>  
  19.         </testResources>  
  20.     </build>  
  21.     ...  
  22. </project></span>  

 

  在运行时指定激活的Profile,即可使用指定的属性引用。如:mvn clean install -Pdev

 

2.web资源过滤
  在web项目中有两类资源,一类是构建后放置到WEB-INF/classes目录下,另一类则放到war包的根目录,如css文件。第二类资源由maven-war-plugin插件控制。可以配置方式不同,如:

 

Xml代码  收藏代码
  1. <span style="font-size: medium;"><plugin>  
  2.     <groupId>org.apache.maven.plugins</groupId>  
  3.     <artifactId>maven-war-plugins</artifactId>  
  4.     <version>2.1-beta-1</version>  
  5.     <configuration>  
  6.         <webResources>  
  7.             <resource>  
  8.                 <filtering>true</filtering>  
  9.                 <directory>src/main/webapp</directory>  
  10.                 <includes>  
  11.                     <include>* */*.css</include>  
  12.                     <include>* */*.js</include>  
  13.                 </includes>  
  14.             </resource>  
  15.         </webResources>  
  16.     </configuration>  
  17. </plugin></span>  

 

 

 

三、Profile
  不同的环境需要的配置可能不相同,为了让构建适合各种不同的环境,Maven引入了Profile概念。


1.定义profile
  可在pom.xml、用户settings.xml、全局settings.xml,profiles.xml(Maven3不支持)中定义profile。如:

Html代码  收藏代码
  1. <span style="font-size: medium;"><project>  
  2.     ...  
  3.     <profiles>  
  4.         <profile>  
  5.             <id>dev</id>  
  6.             <properties>  
  7.                 <db.driver>...</db.driver>  
  8.                 <db.url>...</db.url>  
  9.                 <db.username>...</db.username>  
  10.                 <db.password>...</db.password>  
  11.             </properties>  
  12.         </profile>  
  13.         <profile>  
  14.             <id>test</id>  
  15.             <properties>  
  16.                 <db.driver>...</db.driver>  
  17.                 <db.url>...</db.url>  
  18.                 <db.username>...</db.username>  
  19.                 <db.password>...</db.password>  
  20.             </properties>  
  21.         </profile>  
  22.     </profiles>  
  23.     ...  
  24. </project>  
  25. </span>  

 

 

 

2.激活profile
(1)命令行激活
  使用-P参数,可同时激活多个profile。如:mvn clean install -Pdev-x,dev-y

 

(2)settings文件显示激活
  如果用户希望某个profile一直处于激活状态,可在settings.xml中使用activeProfiles元素,表示其配置的profile对于所有项目都处于激活状态,如:

Xml代码  收藏代码
  1. <span style="font-size: medium;"><settings>  
  2.     ...  
  3.         <activeProfiles>  
  4.             <activeProfile>  
  5.                 dev-x  
  6.             </activeProfile>  
  7.         </activeProfiles>  
  8.     ...  
  9. </settings></span>  

 

 

(3)系统属性激活
  用户可以配置当某个系统属性存在时,自动激活profile,如:

Xml代码  收藏代码
  1. <span style="font-size: medium;">   <activation>  
  2.         <property>  
  3.             <name>test</name>  
  4.         </property>  
  5.     </activation>  
  6.     <id>dev</id>  
  7.     <properties>  
  8.         <db.driver>...</db.driver>  
  9.         <db.url>...</db.url>  
  10.         <db.username>...</db.username>  
  11.         <db.password>...</db.password>  
  12.     </properties>  
  13. </profile></span>  

 

 

  也可以配置成当某个系统属性存在,并且为指定值时,自动激活profile。如:

Xml代码  收藏代码
  1. <span style="font-size: medium;"><profile>  
  2.     <activation>  
  3.         <property>  
  4.             <name>test</name>  
  5.             <value>x</value>  
  6.         </property>  
  7.     </activation>  
  8.     <id>dev</id>  
  9.     <properties>  
  10.         <db.driver>...</db.driver>  
  11.         <db.url>...</db.url>  
  12.         <db.username>...</db.username>  
  13.         <db.password>...</db.password>  
  14.     </properties>  
  15. </profile></span>  

 

 

  系统属性可在命令行中指定,如:mvn clean install -Dtest=x

 

(4)操作系统环境激活
  profile可根据操作系统环境自动激活。如:

Xml代码  收藏代码
  1. <span style="font-size: medium;"><profile>  
  2.     <activation>  
  3.         <os>  
  4.             <name>Windows XP</name>  
  5.             <family>Windows</family>  
  6.             <arch>x86</arch>  
  7.             <version>5.1.2600</version>  
  8.         </os>  
  9.     </activation>  
  10.     <id>dev</id>  
  11.     <properties>  
  12.         <db.driver>...</db.driver>  
  13.         <db.url>...</db.url>  
  14.         <db.username>...</db.username>  
  15.         <db.password>...</db.password>  
  16.     </properties>  
  17. </profile>  
  18. </span>  

 

 

(5)根据文件存在与否激活
  可根据项目中是否存在某个文件来激活profile,如:

Xml代码  收藏代码
  1. <span style="font-size: medium;"><activation>  
  2.     <file>  
  3.         <missing>x.properties</missing>  
  4.         <exists>y.properties</exists>  
  5.     </file>  
  6. </activation></span>  

 

 

(6)默认激活
  可在定义profile时指定为默认激活,如:

Xml代码  收藏代码
  1. <span style="font-size: medium;"><activation>  
  2.     <activeByDefault>true</activeByDefault>  
  3. </activation></span>  

 

  注意:但有profile通过其他方式激活时,默认激活失效。

分享到:
评论

相关推荐

    maven多环境配置打包

    在每个profile中,可以定义资源过滤规则,例如,替换`${db.url}`变量,使其在不同环境中指向不同的数据库URL。 4. 配置示例: 在pom.xml中,可以这样定义一个profile: ```xml &lt;profile&gt; &lt;id&gt;dev &lt;env&gt;dev...

    Maven下实现多种环境下的资源配置管理

    2. **资源过滤**: Maven的资源插件(maven-resources-plugin)支持根据profile进行资源文件的过滤。通过`&lt;build&gt;&lt;resources&gt;`节点下的`&lt;filtering&gt;`属性,我们可以指定哪些资源文件需要进行过滤。例如,我们可以为...

    Maven权威指南 很精典的学习教程,比ANT更好用

    2. 安装和运行Maven 2.1. 验证你的Java安装 2.2. 下载Maven 2.3. 安装Maven 2.3.1. 在Mac OSX上安装Maven 2.3.2. 在Microsoft Windows上安装Maven 2.3.3. 在Linux上安装Maven 2.3.4. 在FreeBSD或OpenBSD上...

    maven多环境部署pom文件实例

    4. **使用Maven的 filtering 和 filtering-profiles**:结合Profile和资源过滤,可以在不同环境下替换特定的文本内容。例如,替换数据库连接字符串。 5. **使用maven-antrun-plugin**:Maven的AntRun插件允许你在...

    深入解析 Maven 核心概念与高级特性

    内容概要:本文详细介绍了 Maven 的基本原理及其高级特性,包括构建工具的功能、依赖管理、项目信息聚合、坐标系统、生命周期、仓库管理、插件机制、多模块构建、属性配置、资源过滤和构建 profile。通过具体的 XML ...

    springboot通过@Profile注解配置不同环境

    总结来说,通过`@Profile`注解和Maven的资源过滤,我们可以轻松地管理Spring Boot应用在不同环境中的配置。这使得我们能够在开发、测试和生产环境之间切换,而无需对代码进行大量修改,极大地提高了开发效率和部署...

    maven构建的Tomcat源码

    每个模块都有自己的源码和资源文件,这些可以通过Maven的构建过程整合到最终的Tomcat服务器中。 6. **自定义与扩展**:对于开发者而言,理解Tomcat源码意味着可以自定义Tomcat的行为,比如编写新的连接器、Valves...

    maven3 代码

    8. **资源处理**:Maven能够处理项目中的静态资源,如复制、过滤和替换文件内容。 9. **自定义构建过程**:虽然Maven提供了一套标准的生命周期,但开发者可以通过自定义生命周期阶段和插件,实现特定的构建需求。 ...

    maven:用于推送pom.xml文件

    - **构建配置**:可以配置构建过程中的各种参数,比如源代码编码、目标代码级别、资源过滤等。 3. **Maven仓库**: Maven使用仓库系统来存储和检索依赖。本地仓库是安装在开发者机器上的,远程仓库则可以是公司...

    SpringBoot开发环境、测试环境、部署环境切换.pdf

    在`&lt;build&gt;`节点中,我们需要配置Maven的资源过滤,以便在打包时选择正确的配置文件: ```xml &lt;!-- 配置文件过滤器 --&gt; &lt;directory&gt;src/main/resources/env &lt;exclude&gt;dev/* &lt;exclude&gt;test/* ...

    Guns技术文档

    - **springprofile**:配置不同环境下的属性文件。 - **多机器部署开启springsession**:说明在多台机器上部署时如何开启spring session。 - **使用Redis**:解释如何使用Redis作为缓存工具。 - **XSS过滤器**:介绍...

    biojava使用指南及部分程序开发

    用户可以列出序列中的注释信息,根据物种属性来过滤序列,创建和管理位置信息,以及定义序列的特征。 BLAST和FASTA分析是序列分析的常用工具,BioJava同样提供了对应的解析器,以便能够解析和提取BLAST和FASTA结果...

    springboot-学习资料

    多环境切换则通过配置文件中的profile属性,使得应用可以根据不同的环境(如开发、测试、生产)加载不同的配置。 具体使用方面,Spring Boot与数据库的集成非常方便,可以轻松集成MyBatis进行持久层操作。分页插件...

    Guns技术文档.docx

    - **静态资源和模板位置的变更**:解释如何更改项目中静态资源和模板文件的位置。 - **三个或更多数据源如何配置**:提供配置多个数据源的具体步骤。 - **添加登录验证码**:介绍如何在登录过程中增加验证码功能以...

    Spring Boot入门与实战_springboot_spring_

    3. **API网关**:Zuul或Spring Cloud Gateway作为微服务系统的入口,实现路由转发和过滤器功能。 **八、Spring Boot 实战项目** 1. **创建RESTful API**:构建一个简单的Web服务,提供CRUD操作。 2. **集成安全框架...

    SpringBoot生产环境和测试环境配置分离的教程详解

    - 使用Maven或者Gradle的资源过滤功能,自动替换不同环境的配置变量。 - 使用云配置中心(如Spring Cloud Config Server)集中管理不同环境的配置。 - 使用环境变量或系统属性覆盖配置文件中的默认值,以适应特定...

Global site tag (gtag.js) - Google Analytics