zoukankan      html  css  js  c++  java
  • Maven Resources Plugin

    http://maven.apache.org/plugins/maven-resources-plugin/examples/copy-resources.html

    Maven Resources Plugin

    The Resources Plugin handles the copying of project resources to the output directory. There are two different kinds of resources: main resources and test resources. The difference is that the main resources are the resources associated to the main source code while the test resources are associated to the test source code.

    Thus, this allows the separation of resources for the main source code and its unit tests.

    Starting with version 2.3 this plugin uses the Maven Filtering shared component for filtering resources.

    Filtering

    Variables can be included in your resources. These variables, denoted by the ${...} delimiters, can come from the system properties, your project properties, from your filter resources and from the command line.

    For example, if we have a resource src/main/resources/hello.txt containing

    Hello ${name}
    

    And a POM like this

    <project>
      ...
      <name>My Resources Plugin Practice Project</name>
      ...
      <build>
        ...
        <resources>
          <resource>
            <directory>src/main/resources</directory>
          </resource>
          ...
        </resources>
        ...
      </build>
      ...
    </project>
    

    Upon calling

    mvn resources:resources
    

    This will create a resource output in target/classes/hello.txt which contains exactly the same text.

    Hello ${name}
    

    However, if we add a <filtering> tag to our POM and set it to true like this:

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

    Our target/classes/hello.txt after calling

    mvn resources:resources
    

    would be

    Hello My Resources Plugin Practice Project
    

    That's because the name variable was replaced by the value of the project's name (which was specified in the POM).

    Moreover, we can also assign values through the command line using the "-D" option. For example, to change the value for the variable name to "world", we can simply invoke this command:

    mvn resources:resources -Dname="world"
    

    And the output in target/classes/hello.txt would be

    Hello world
    

    Furthermore, we are not limited to use pre-defined project variables. We can specify our own variables and their values in the <properties> element. For example, if we want to change the variable from "name" to "your.name", we can do so by adding a <your.name> element within the <properties> element.

    <project>
      ...
      <properties>
        <your.name>world</your.name>
      </properties>
      ...
    </project>
    

    But to organize your project, you may want to put all your variables and their values in a separate file so that you will not have to rewrite your POM, or set their values all the time with every build. This can be done by adding a filter.

    <project>
      ...
      <name>My Resources Plugin Practice Project</name>
      ...
      <build>
        ...
        <filters>
          <filter> [a filter property] </filter>
        </filters>
        ...
      </build>
      ...
    </project>
    

    For example, we can separate "your.name" from the POM by specifying a filter file my-filter-values.properties containing:

    your.name = world
    

    and adding that to our POM

        ...
        <filters>
          <filter>my-filter-values.properties</filter>
        </filters>
        ...
    

    Warning: Do not filter files with binary content like images! This will most likely result in corrupt output. If you have both text files and binary files as resources, you need to declare two mutually exclusive resource sets. The first resource set defines the files to be filtered and the other resource set defines the files to copy unaltered as illustrated below:

    <project>
      ...
      <build>
        ...
        <resources>
          <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
              <include>**/*.xml</include>
            </includes>
          </resource>
          <resource>
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
            <excludes>
              <exclude>**/*.xml</exclude>
            </excludes>
          </resource>
          ...
        </resources>
        ...
      </build>
      ...
    </project>
    
  • 相关阅读:
    罗尔定理、微分中值定理、广义微分中值定理
    高等数学和数学分析教材推荐及其学习方法浅谈
    音视频下载插件 安装及使用
    win10台式机rtl8188eu(FW 150 UM V2.0)无线网卡无法连接wifi(无法连接到这个网络)
    django模板中的extends和include使用方法
    wordpress中文目录出现“有点尴尬诶!该页无法显示"
    wordpress迁移后登陆时出现Forbidden You don’t have permission to access /wp-login.php on this server
    centos设置开机自启动脚本
    hexo的jacman主题设置语言为英文后偶尔出现中文
    安卓QQ聊天记录导出、备份完全攻略
  • 原文地址:https://www.cnblogs.com/lexus/p/2357607.html
Copyright © 2011-2022 走看看