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

“Maven官方用户入门指南”翻译之六

 
阅读更多

如何过滤资源文件?

有时候资源文件中某一个属性值需要在构建时才指定。在maven中这个是通过在一个资源属性文件中引入 ${<property name>},,这个属性可以在pom文件中、settings.xml中、自定义属性文件或者一个系统属性。

在maven中构建拷贝资源文件的时候只需要在pom文件中对指定的资源目录设置filtering 为true即可:

 

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Maven Quick Start Archetype</name>
  <url>http://maven.apache.org</url>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
  </build>
</project>

你注意到你需要添加 buildresourcesresource 元素。在添加的时候我们显示的指明了本地资源目录 src/main/resources。其实上述信息都是默认有的,只不过默认的时候filtering 值为false,那么我们不得不在pom中添加设置他为true。

引入一个在pom中定义的属性,这个属性名称就是xml的元素名称,pom作为xml的根元素。因此${pom.name}就代表工程的名称,${pom.version}就代表工程版本号,${pom.build.finalName}代表工程打包的jar文件名等等。需要注意的是有些pom的元素有默认值,这样就不需要我们显示的在pom文件中定义了。简单的说用户的settting.xml中定义的元素可以直接被使用,以settings开头(如: ${settings.localRepository} 标示用户本地资源路径)。

接着我们上面的例子,我们在 application.properties (在src/main/resources中放着)中添加一组将要的被使用到的属性:

 

# application.properties
application.name=${pom.name}
application.version=${pom.version}

弄好之后你可以执行下属命令(process-resources命令主要是资源拷贝和填充

 

 

mvn process-resources

命令之后你会看到application.properties 将会在target/classes(最终会打包到jar里)下出现,其内容如下:

 

 

# application.properties
application.name=Maven Quick Start Archetype
application.version=1.0-SNAPSHOT

如果属性对在外部文件中定义的话你需要在pom中对此外部文件添加一个引用,首先我们创建一个src/main/filters/filter.properties:外部文件:

# filter.properties
my.filter.value=hello!

 接着我们把这个新文件加入到我们的pom文件中:

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Maven Quick Start Archetype</name>
  <url>http://maven.apache.org</url>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <filters>
      <filter>src/main/filters/filter.properties</filter>
    </filters>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
  </build>
</project>

 接着我们在application.properties中引用其中的属性:

# application.properties
application.name=${pom.name}
application.version=${pom.version}
message=${my.filter.value}

执行 mvn process-resources会把新的属性值填充到application.properties.中去。除了定义my.filter.value 值在外部资源文件中之外还有一种方式就是在pom文件中通过properties 来定义,这样可以达到同样的效果(src/main/filters/filter.properties将不会在被引用):

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Maven Quick Start Archetype</name>
  <url>http://maven.apache.org</url>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
  </build>

  <properties>
    <my.filter.value>hello</my.filter.value>
  </properties>
</project>

此外资源属性还可以从系统中获取,java属性比如(java.version 和 user.home),以及标致的java命令行格式 -D 的那种,接上例我们修改 application.properties如下:

# application.properties
java.version=${java.version}
command.line.prop=${command.line.prop}

你执行下属命令(command.line.prop属性值在命令行中出现),application.properties中将被填充系统属性:

mvn process-resources "-Dcommand.line.prop=hello again"

 

 

 

 

0
0
分享到:
评论

相关推荐

    Docx4j入门指南

    Docx4j的入门指南主要针对新用户,提供了文档的最新版本,可以在GitHub的docs目录中找到。当前大部分的入门文档是英文版本,但用户也可以通过机器翻译或自行翻译为其他语言。有兴趣提供翻译版本的用户,可以通过联系...

    Jetspeed2官网guide文档翻译2

    【Jetspeed2官网guide文档翻译2】这篇文档主要面向初次接触Jetspeed的用户,提供了从源码构建和部署Jetspeed 2.2的详细步骤。Jetspeed是一个开源的portlet容器和企业信息门户平台,它允许集成多种应用和服务,提供...

    HBase_官方文档-中文翻译

    快速入门适合对 HBase 有一定了解的用户,而慢速开始则提供了更详尽的配置和运行环境设置指南。 **配置** 配置 HBase 包括几个关键文件:`hbase-site.xml` 用于自定义配置,`hbase-default.xml` 提供默认配置参数...

    radiusmanager3.9.0中文包

    - 文档:包括用户手册、快速入门指南和常见问题解答,帮助用户理解和操作软件。 - 配置文件:预设的配置模板,简化初始设置。 - 示例数据库:展示如何设置和管理用户、设备和服务。 - 语言包:包含中文翻译的界面...

    mybatis用户指南

    文档鼓励用户发现文档中的任何不足之处,并鼓励用户自己学习并撰写文档,源文件以xdoc格式提供,存放在项目的Git Fork仓库中。 对于MyBatis的安装,用户只需要将mybatis-x.x.x.jar文件包含在类路径中。如果使用...

    mybatis中文文档(黑白书籍版)

    特别是Maven用户,只需要将相应的dependency代码片段加入到pom.xml文件中,即可快速完成MyBatis的依赖引入。 关于XML配置,文档详细说明了如何从XML文件构建SqlSessionFactory实例。SqlSessionFactory是MyBatis中一...

    Spring Boot Reference Guide 中文文档

    Spring Boot Reference Guide中文文档是对Spring Boot官方文档的翻译,它为中文用户提供了学习和使用Spring Boot的指南。 文档中主要涵盖了以下知识点: 1. 文档结构:文档包含多个章节,从基础的入门指导到高级...

    Spring Boot 2 中文 参考手册 中文文档

    对于初学者,可以尝试Spring官方提供的入门指南。此外,可以在stackoverflow网站上提问,或者在Spring Boot的GitHub仓库中报告bug。 3. 第一步 文档还提供了一个“第一步”的部分,旨在帮助用户开始使用Spring Boot...

    Spring Framework Reference Documentation 4.25

    - **简介**:这部分内容为开发者提供了快速入门指南,帮助新用户理解如何开始使用Spring框架进行开发。 - **目标读者**:面向希望了解如何快速搭建Spring应用环境的初学者。 ##### 2. Spring框架介绍 - **依赖注入...

    junit单元测试文档

    文档提到了JUnit 5的用户指南,介绍了JUnit 5官方user guide文档的翻译,以及英文官方文档的来源。文档的当前版本是JUnit 5.0.24。为了满足不同用户的阅读习惯和网络环境,文档被托管在不同的服务器上,包括国内腾讯...

    mybatis-spring指南中文版

    ### Mybatis-Spring指南中文版知识点详述 #### 第一章 介绍 ##### 1.1 为什么整合MyBatis和Spring? MyBatis作为一款优秀的SQL映射框架,在与Spring框架结合使用时能带来诸多便利。每个Spring的用户都曾期待...

    Mybatis中文手册

    #### 三、入门指南 - **安装**: - **JAR包安装**:将`mybatis-x.x.x.jar`文件放置到项目的classpath下。 - **Maven安装**:在`pom.xml`文件中添加如下依赖: ```xml &lt;groupId&gt;org.mybatis &lt;artifactId&gt;...

Global site tag (gtag.js) - Google Analytics