`
liyixing1
  • 浏览: 958655 次
  • 性别: 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功能的存在,在不同环境,数据库的连接配置也会变化。
分享到:
评论

相关推荐

    13. 处理静态资源(自定义资源映射)【从零开始学Spring Boot】

    但有时我们需要更精细的控制,例如改变默认位置、添加过滤器或者设置缓存策略,这时就需要自定义资源映射。 1. **自定义静态资源目录**: 如果你想将静态资源放在其他地方,可以通过配置`spring.resources.static-...

    QT自定义窗口 自由拖动 自定义标题

    - 使用`setWindowFlags()`函数可以修改窗口的默认属性,如禁用系统标题栏,这样我们就有了更大的自由度来设计自己的标题。 2. **自定义标题**: - 创建一个自定义的标题区域,这通常是一个QWidget子类,包含标题...

    JSP自定义标签学习笔记

    在实际应用中,标记体的处理可以更复杂,例如根据属性值对内容进行格式化、过滤或处理,然后将其插入到JSP页面。 六、标签中的子标记 子标记允许在一个自定义标签内部嵌套其他自定义标签,实现更复杂的逻辑。每个子...

    EasyUI DataGrid过滤用法实例

    `filter.png` 文件可能是用于显示过滤图标或操作按钮的图像资源。在 DataGrid 中,启用过滤后,每列标题上会出现一个过滤图标,用户点击该图标可以打开过滤菜单,选择过滤条件。 `datagrid-filter.html` 文件则包含...

    Android自定义EditText

    文件"5-11-Android自定义控件(EditText)"可能是对这个过程的一个详细教程或示例代码,它可能涵盖了上述提到的一些步骤,包括创建自定义属性、解析属性、重写父类方法等。阅读这个文件将有助于进一步理解如何在实践...

    WPF自定义控件库项目源码

    1. **列表**:可能是指自定义的列表视图或数据网格,这些控件可能增强了标准WPF控件的功能,如支持更复杂的排序、过滤和分页,或者拥有独特的布局和样式。 2. **按钮**:自定义按钮可能包含了各种风格和动画效果,...

    C#编写的属性面板 源码

    1. 自定义属性显示:通过继承`System.ComponentModel.PropertyDescriptor`类,开发者可以控制属性的显示方式,例如添加图标、改变颜色或者调整排序。 2. 属性过滤:根据需要,可以实现只显示特定类型的属性,或者在...

    Flex dataGrid 自定义显示列

    过滤功能通常需要编写自定义代码来实现,而分组则可以通过`grouping`属性和`AdvancedDataGrid`的`groupingEnabled`属性来开启。 总的来说,Flex DataGrid的自定义显示列是通过灵活的列配置、自定义渲染器以及数据...

    winform自定义组件和控件

    - **属性和方法扩展**:添加自定义属性和方法,用于设置控件状态或执行特定操作。 - **设计时支持**:为了让控件在设计时也能正常工作,需要实现ISupportInitialize接口和Designer属性。 在实际项目中,自定义控件...

    自定义的select标签

    4. **扩展功能**:可以根据需求添加自定义功能,比如动态加载选项、搜索过滤等。这可以通过添加额外的方法和属性来实现。 5. **使用组件**:在HTML中像使用普通HTML标签一样使用自定义标签: ```html ...

    自定义textview与editview

    同时,可以添加额外的属性(如字体资源、颜色值等)并使用`setXXX()`方法暴露给布局文件,方便在XML中使用。 对于`CustomEditText`,可能我们需要增加如自动完成、密码显示切换等功能。这可能涉及到监听输入事件、...

    wpf 自定义ComBoBox带DataGrid

    5. **依赖属性(Dependency Property)**:为了支持自定义属性,如是否显示DataGrid,或者DataGrid的列数,我们需要定义依赖属性。依赖属性提供了属性变更的通知和动画支持。 6. **扩展性(Extensibility)**:为了...

    自定义QTreeView(详解)

    通过设置QStyleSheet,我们可以改变字体、颜色、背景、边框等属性,创建独特的视觉效果。例如,我们可以为选中的项设置不同的背景色,或者为特定的行添加下划线。 最后,我们讨论如何实现**无边框界面的拖放操作**...

    vc2008 自定义表格类

    这些函数可能是用于数据绑定、排序、过滤或自定义事件处理,以增强表格的实用性。 5. **示例项目**:提供的简单示例项目是一个很好的学习资源,它展示了如何在实际应用中使用这个自定义表格类。通过运行和分析示例...

    安卓进度条loadingprogress相关-自定义ProgressBar完整实现了下载的各个状态自定义圆角矩形进度条自定义修改下载控件颜色.rar

    这可以通过设置颜色资源或者在代码中动态改变View的颜色属性实现。对于颜色的控制,开发者需要理解Android的颜色选择器(ColorPicker)和颜色过滤器(ColorFilter)。 压缩包中的文件名表明,包含有源码说明、更多...

    fiddler中文版,可自定义规则

    - **自定义会话属性**:可以为每个HTTP会话添加自定义的标签或属性,便于后期的过滤和分析。 3. **在前端测试中的应用**: - **模拟不同的网络环境**:Fiddler可以帮助前端开发者模拟各种网络状况,如慢速网络、...

    log4net自定义Appender

    4. **配置属性**:根据需求,定义自定义的配置属性,比如特殊的日志格式、附加信息等。 5. **实现配置解析**:使用`IAppenderAttachable`接口,并实现`ActivateOptions`方法,以便在配置文件中指定多个Appender实例...

    AngularJS实现的自定义过滤器简单示例

    在AngularJS中,自定义过滤器的另一个例子是基于状态或属性的文本转换。例如,根据某个字段的值返回不同的颜色、文本或类别。在这个例子中,过滤器根据不同的类型参数,通过switch语句返回不同的值,这可以用于动态...

    可自定义树节点的Tree组件

    - **搜索和过滤**:内置搜索框,让用户能快速找到特定节点,或者根据条件过滤显示部分节点。 4. **源码分析**: - **数据模型**:理解组件的数据结构,如节点对象包含哪些属性和方法,如何表示父子关系。 - **...

Global site tag (gtag.js) - Google Analytics