• 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>
    
  • 相关阅读:
    java中有趣的unicode转义序列
    react父组件传入子组件的props不更新问题
    create-react-app修改端口号
    转移博客启动中。。。
    idea java界面设置中文
    记录一次 electronjs 12.0.0 安装运行出现cli.js出错、以及获取不到nodeapi的问题(解决办法:版本不对导致的)
    springboot 统一json返回格式,并设置http响应码
    springboot 统一json返回结构
    【Python】【PyPI】twine模块打包python项目上传pypi
    【GitHub】README.md自述文件配置
  • 原文地址:https://www.cnblogs.com/lexus/p/2357607.html
Copyright © 2020-2023  润新知