`
liyixing1
  • 浏览: 940491 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

属性 自定义属性 资源过滤

阅读更多


通过${}访问属性

。Maven提供了隐式的变量,可以用来访问环境变
量,POM信息,和Maven Settings:
env
env变量暴露了你操作系统或者shell的环境变量。

project
project变量暴露了POM。你可以使用点标记(.)的路径来引用POM元素
的值。例如,${project.artifactId}。

settings
settings变量暴露了Maven settings信息。可以使用点标记(.)的路径来引
用settings.xml文件中元素的值。例如,${settings.offline}会引用~/.m2/
settings.xml文件中offline元素的值。

系统属性,只要是能通过System.getProperty()方法获取的属性都可以作为Maven属性被引 用

除了隐式变量,还提供一些非隐式功能

Java系统属性
所有可以通过java.lang.System中getProperties()方法访问的属性都被暴露
成POM属性。具体能访问到什么属性,可以查看java.lang.System类的Javadoc中找到。


项目的属性
[url]http://maven.apache.org/ ref/2.0.9/maven-model/maven.html[/url]

常用的“
project.groupId 和 project.version
project.name
project.description
• project.build.sourceDirectory
• project.build.scriptSourceDirectory
• project.build.testSourceDirectory
• project.build.outputDirectory
• project.build.testOutputDirectory
• project.build.directory
sourceDirectory,scriptSourceDirectory,和testSourceDirectory提供了项 目源码目录的访问方式。outputDirectory和testOutputDirectory则能让你访问 Maven放置字节码和其它构建输出的目录。directory引用的目录就是包含上述两 个输出目录的父目录。


Maven的Settings属性
你也可以引用任何Maven本地Settings文件的属性,该文件通常位于~/.m2/ settings.xml。



环境变量属性
环境变量可以通过env.*前缀引用。以下列表是一些有趣的环境变量:
env.PATH 包含了Maven运行的当前PATH。该PATH包含了一个用来查找可运行脚本和程序的 目录列表,
env.HOME (在*nix系统中)这个变量指向了用户的home目录。但你更应该使用/home/ hudson,而非这个变量。
env.JAVA_HOME 指向了Java安装目录。它要么指向JDK安装目录,要么或者JRE目录。但你更应该 考虑使用/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre而非这个属性。
env.M2_HOME 指向了Maven2安装目录



自定义属性
我们还可以通过pom.xml或者settings.xml中的properties元素设置自己的属
性,或者还可以使用外部载入的文件中属性。


<project>
  ...
  <properties>
    <arbitrary.property.a>This is some text</arbitrary.property.a>
    <hibernate.version>3.3.0.ga</hibernate.version>
  </properties>
  ...
  <dependencies>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate</artifactId>
      <version>${hibernate.version}</version>
    </dependency>  
  </dependencies>
  ...
</project>









资源过滤
你可以使用Maven来对项目资源进行变量替换。在资源过滤被激活的时候,Maven会扫描 资源,寻找由${ 和}包围的Maven属性的引用。一旦它找到这些引用,它就会使用合适 的值去替换它们,就像前一节中定义的属性可以在POM中引用一样。当你需要根据目标 部署平台使用不同的配置来参数化一个构建的时候,这就非常有用。


通常一个在src/main/resources目录下的.properties文件或者XML文档会包含对外部资 源的引用,如需要根据目标部署平台进行不同配置的数据库或网络地址。例如,一个从 数据库读取数据的系统有一个XML文档,其包含了数据库的JDBC URL以及安全凭证。如 果你在开发和产品环境使用不同的数据库。你可以选择使用一种技术如JNDI将配置信息 从应用程序提取出来至应用服务器,或者你可以创建一个知道如何根据目标平台用不同 的值替换变量的构建。



假设SPRING的配置关于数据库配置部分是
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    <bean id="someDao" class="com.example.SomeDao">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
</beans>




POM

<project>
  ...
  <properties>
    <jdbc.driverClassName>com.mysql.jdbc.Driver</jdbc.driverClassName>
    <jdbc.url>jdbc:mysql://localhost:3306/development_db</jdbc.url>
    <jdbc.username>dev_user</jdbc.username>
    <jdbc.password>s3cr3tw0rd</jdbc.password>
  </properties>
  ...
  <build>
    <resources>
      <resource>src/main/resources</resource>
      <filtering>true</filtering>
    </resources>
  </build>
  ...
  <profiles>
    <profile>
      <id>production</id>
      <properties>
        <jdbc.driverClassName>oracle.jdbc.driver.OracleDriver</jdbc.driverClassName>
        <jdbc.url>jdbc:oracle:thin:@proddb01:1521:PROD</jdbc.url>
        <jdbc.username>prod_user</jdbc.username>
        <jdbc.password>s00p3rs3cr3t</jdbc.password>
      </properties>
    </profile>  
  </profiles>
</project>



maven默认资源过滤是关闭的,通过 <resources>
      <resource>src/main/resources</resource>
      <filtering>true</filtering>
    </resources>
开启资源过滤

另外如上profile功能的存在,在不同环境,数据库的连接配置也会变化。
分享到:
评论

相关推荐

    人力资源管理软件(完全免费)

    人力资源管理软件解决了合同类型定义里面的自定义扩展属性删不掉的问题。(感谢☆缘☆) 2008-04-09 人力资源管理软件发布1.5版本,做了以下改进 员工资料支持拼音查询(感谢☆缘☆) 员工资料输入身份证后自动...

    网站传神产品文章采集系列(动易版)

    与动易4.03程序无缝结合,可以设定入库的新闻属于哪个专题,采集过程可以查看已入库的新闻具体内容,采集模板可任意导入导出,自定义获取目标网站图片 flash 音乐等资源,可以自定义设置获取图片 flash 音乐资源的...

    WPF编程宝典 part1

    10.1.3 静态资源和动态资源 242 10.1.4 非共享资源 243 10.1.5 通过代码访问资源 244 10.1.6 应用程序资源 244 10.1.7 系统资源 245 10.2 资源字典 246 10.2.1 创建资源字典 246 10.2.2 使用资源字典 247 10.2.3 在...

    Vue面试资源 难度:中等

    题目类型:Vue面试资源 难度:中等 覆盖范围:Vue基础知识、Vue组件通信、Vue路由、Vuex等。 1. 请简要介绍一下Vue的核心概念和特点。 2. Vue的生命周期钩子有哪些?它们分别在什么时候执行? 3. 请解释一下Vue中的...

    XYplorer(资源管理器) v19.90.0100.zip

    软件类似于资源管理器,具有强大的文件搜索、通用预览功能。软件通过双面板、多标签模式来高效地浏览文件,每个面板都能开启多个文件夹标签,以此方便的完成浏览、查看、复制、删除等操作。软件界面美观简洁、简单...

    Spring Boot中文文档.rar

    直接自定义ConfigurableServletWebServerFactory 28.4.5.JSP限制 28.5.嵌入式Reactive Server支持 28.6.Reactive Server资源配置 29.安全 29.1.MVC安全 29.2.WebFlux安全 29.3.OAuth2 ...

    bonita-angular-dashboard:Bonita Dashboard 基于 AngularJS 集成为自定义页面(已弃用)

    bonita-角度仪表板 Bonita BPM 仪表板基于 AngularJS ... 它在服务器资源方面效率较低,但提供了带有排序和过滤功能的改进 UI。 RESOURCE_PATH此路径允许应用通过 Bonita 自定义页面服务器访问资源(不应修改)。 U

    report 开源的访问层中间件,基于java平台

    report 是一个开源的访问层中间件,基于java平台,依赖于spring,以...d)@Activate:标注在自定义的过滤器上,order属性值为排序值,取值范围int,如有重复则顺延 注:自定义解析器扩展,过滤器扩展等等参照源码。

    一款非常好的WPF编程宝典2010 源代码

    9.3.3 维护自定义的属性 216 9.4 导航服务 217 9.4.1 通过编程进行导航 217 9.4.2 导航事件 218 9.4.3 管理日志 219 9.4.4 向日志添加自定义项 221 9.4.5 页函数 225 9.5 XAML浏览器应用程序 227 9.5.1 XBAP...

    Apress.Pro.WPF.in.C.Sharp.2008.2nd.Edition.Feb.2008

    9.3.3 维护自定义的属性 216 9.4 导航服务 217 9.4.1 通过编程进行导航 217 9.4.2 导航事件 218 9.4.3 管理日志 219 9.4.4 向日志添加自定义项 221 9.4.5 页函数 225 9.5 XAML浏览器应用程序 227 9.5.1 XBAP应用程序...

    独品网页批量采集2.1中文绿色免费版

    独品网页批量采集是一款指定区域指定属性采集网页内容的软件,可自定义过滤条件采集方式,速度快,精确度高,网页资源批量采集神器。支持循环地址,按标题保存、任务引用(延伸式多 层过滤筛选分工)、自定义函数(强大...

    WPF编程宝典 part2

    10.1.3 静态资源和动态资源 242 10.1.4 非共享资源 243 10.1.5 通过代码访问资源 244 10.1.6 应用程序资源 244 10.1.7 系统资源 245 10.2 资源字典 246 10.2.1 创建资源字典 246 10.2.2 使用资源字典 247 10.2.3 在...

    从零开始学Spring Boot

    1.16 处理静态资源(自定义资源映射) 1.17 Spring Boot定时任务的使用 1.18 Spring Boot使用Druid和监控配置 1.19 Spring Boot使用Druid(编程注入) 1.20 Spring Boot普通类调用bean 1.21 使用模板(thymeleaf-...

    全百科网页信息批量采集工具 v1.5.rar

    全百科网页信息批量采集工具 v1.5(批量网页采集工具)是一款操作简便的内容采集与信息发布的数据处理器,可以指定区域指定属性采集网页内容的软件,可自定义过滤条件采集方式,速度快,精确度高,网页资源批量采集...

    批量更名终结者一款文件批量更名的软件.exe

    批量更名终结者,不仅仅是一个拥有众多优秀独立功能板块的批量更名工具,它还拥有简化的资源管理器功能,强大的全盘搜索功能,高级的多模式过滤功能,列表整理打印功能......... 当前版本有“递增”、“替换”、...

    批量更名终结者2022一款可以对磁盘文件和文件夹进行多功能批量更名操作的实用工具.rar

    拥有简化的资源管理器功能,强大的全盘搜索功能,高级的多模式过滤功能,列表整理打印功能......... 当前版本有“递增”、“替换”、“删除”、“转换”、“清除”、“插入”、“属性”、“时间”、“MP3”、“拼音...

    精通AngularJS part1

    针对日期、数字和货币的自定义过滤器285 104小结287 第11章开发健壮的AngularJS应用289 111理解AngularJS的内部运作机制290 AngularJS不是基于字符串的模板引擎290 响应DOM事件更新模型291 将模型变化传播给...

    ESM_ArcSight控制台用户指南(中文翻译版—Zephyr)_6.11.0 .pdf

    将事件属性添加到过滤条件 253 修改视图 254 第十一章 查询 254 查询如何工作 255 一起使用查询和趋势报表 255 在查询查看器中使用查询 255 构建查询 256 查询设置 256 常规查询属性 257 查询字段 260 SELECT查询...

    SpringMVC示例

    员工信息、RESTRUL_CRUD_添加操作&表单标签、RESTRUL_CRUD_删除操作&处理静态资源、RESTRUL_CRUD_修改操作、自定义类型转换器、annotation-driven配置、InitBinder注解、数据的格式化、JSR 303数据校验、错误消息的...

    SpringMVC Employee Demo

    本次实践内容包括RequestMapping关键字修饰类和方法(请求方式、请求参数&请求头、Ant风格路径)、PathVariable注解、HiddenHttpMethodFilter 过滤器(将Get请求转换成PUT、DELETE请求)、RequestParam 注解、...

Global site tag (gtag.js) - Google Analytics