天天看點

maven-resources-plugin使用

指令行中帶參數指定${}變量值

<build>

    <resources>

        <resource>

            <directory>src/main/resources</directory>

            <filtering>true</filtering>

        </resource>

    </resources>

    <plugins>

        <!-- 資源檔案拷貝插件,處理資源檔案 -->

        <plugin>

            <groupId>org.apache.maven.plugins</groupId>

            <artifactId>maven-resources-plugin</artifactId>

            <version>3.0.1</version><!--$NO-MVN-MAN-VER$ -->

            <configuration>

                <encoding>UTF-8</encoding>

                <nonFilteredFileExtensions>

                    <nonFilteredFileExtension>pdf</nonFilteredFileExtension>

                    <nonFilteredFileExtension>swf</nonFilteredFileExtension>

                </nonFilteredFileExtensions>

            </configuration>

        </plugin>

    </plugins>

</build>

Hello ${name}

jest.urls=${name}

(1)   執行mvn resources:resources -Dname="world"

è

Hello world

jest.urls=world

(2)   執行mvn install -Dname="world"

è

Hello world

jest.urls=world

Properties标簽中指定${}變量值

<properties>

    <name>my testname</name>

</properties>

<build>

    <resources>

        <resource>

            <directory>src/main/resources</directory>

            <filtering>true</filtering>

        </resource>

    </resources>

    <plugins>

        <!-- 資源檔案拷貝插件,處理資源檔案 -->

        <plugin>

            <groupId>org.apache.maven.plugins</groupId>

            <artifactId>maven-resources-plugin</artifactId>

            <version>3.0.1</version><!--$NO-MVN-MAN-VER$ -->

            <configuration>

                <encoding>UTF-8</encoding>

                <nonFilteredFileExtensions>

                    <nonFilteredFileExtension>pdf</nonFilteredFileExtension>

                    <nonFilteredFileExtension>swf</nonFilteredFileExtension>

                </nonFilteredFileExtensions>

            </configuration>

        </plugin>

    </plugins>

</build>

(1)   執行mvn resources:resources

è

Hello my test name

jest.urls=my testname

(2)   執行mvn install

è

Hello my test name

jest.urls=my testname

properties檔案中用<filter>标簽過濾

<build>

    <resources>

        <resource>

            <directory>src/main/resources</directory>

            <filtering>true</filtering>

        </resource>

    </resources>

    <filters>

        <filter>src/main/resources/my-filter-values.properties</filter>

    </filters>

    <plugins>

        <!-- 資源檔案拷貝插件,處理資源檔案 -->

        <plugin>

            <groupId>org.apache.maven.plugins</groupId>

            <artifactId>maven-resources-plugin</artifactId>

            <version>3.0.1</version><!--$NO-MVN-MAN-VER$ -->

            <configuration>

                <encoding>UTF-8</encoding>

                <nonFilteredFileExtensions>

                    <nonFilteredFileExtension>pdf</nonFilteredFileExtension>

                    <nonFilteredFileExtension>swf</nonFilteredFileExtension>

                </nonFilteredFileExtensions>

            </configuration>

        </plugin>

    </plugins>

</build>

my-filter-values.properties

name=mytestingname

(1)   執行mvn resources:resources

è

Hello my testingname

jest.urls=my testingname

(2)   執行mvn install

è

Hello my testingname

jest.urls=my testingname

使用copy-resources copy

<build>

    <plugins>

      <plugin>

        <artifactId>maven-resources-plugin</artifactId>

        <version>3.1.0</version>

        <executions>

          <execution>

            <id>copy-resources</id>

            <!-- here the phase you need -->

            <phase>validate</phase>

            <goals>

              <goal>copy-resources</goal>

            </goals>

            <configuration>

              <outputDirectory>${basedir}/target/extra-resources</outputDirectory>

              <resources>         

                <resource>

                  <directory>src/main/resources</directory>

                  <filtering>true</filtering>

                </resource>

              </resources>             

            </configuration>           

          </execution>

        </executions>

      </plugin>

    </plugins>

</build>

(1)   執行mvn resources:resources

è

Hello my testingname

jest.urls=my testingname

排除檔案

<project>

  ...

  <name>MyResources Plugin Practice Project</name>

  ...

  <build>

   ...

    <resources>

     <resource>

       <directory>src/my-resources</directory>

       <includes>

         <include>***test*.*</exclude>

       </excludes>

     </resource>

     ...

    </resources>

   ...

  </build>

  ...

</project>

排除二進制檔案

<project>

  ...

  <build>

    <plugins>

      <plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-resources-plugin</artifactId>

        <version>3.1.0</version>

        <configuration>

          ...

          <nonFilteredFileExtensions>

            <nonFilteredFileExtension>pdf</nonFilteredFileExtension>

            <nonFilteredFileExtension>swf</nonFilteredFileExtension>

          </nonFilteredFileExtensions>

          ...

        </configuration>

      </plugin>

    </plugins>

    ...

  </build>

  ...

</project>

禁止過濾  使用<escapeString>

<properties>

    <name>my test name</name>

</properties>

<build>

    <resources>

        <resource>

            <directory>src/main/resources</directory>

            <filtering>true</filtering>

        </resource>

    </resources>

    <plugins>

        <!-- 資源檔案拷貝插件,處理資源檔案 -->

        <plugin>

            <groupId>org.apache.maven.plugins</groupId>

            <artifactId>maven-resources-plugin</artifactId>

            <version>3.0.1</version><!--$NO-MVN-MAN-VER$ -->

            <configuration>

                <escapeString>\</escapeString>

            </configuration>

        </plugin>

    </plugins>

</build>

指定\, 說明\${}的è${},其它照樣替換

Hello\${name}

jest.urls=${name}

(1)   執行mvn resources:resources

è

Hello ${name}

jest.urls=my testname

(2)   執行mvn install

è

Hello ${name}

jest.urls=my testname

根據id在不同環境下打對應參數

<build>

    <resources>

        <resource>

            <directory>src/main/resources</directory>

            <filtering>true</filtering>

        </resource>

    </resources>

    <plugins>

        <!-- 資源檔案拷貝插件,處理資源檔案 -->

        <plugin>

            <groupId>org.apache.maven.plugins</groupId>

            <artifactId>maven-resources-plugin</artifactId>

            <version>3.0.1</version><!--$NO-MVN-MAN-VER$ -->

            <configuration>

                <escapeString>\</escapeString>

            </configuration>

        </plugin>

    </plugins>

</build>

<profiles>

    <profile>

        <id>dev</id>

        <properties>

            <jest.urls>http://n2:9200,http://n4:9200</jest.urls>

        </properties>

        <activation>

            <activeByDefault>true</activeByDefault>

        </activation>

    </profile>

    <profile>

        <id>production</id>

        <properties>

            <jest.urls>http://192.168.3.241:9200,http://192.168.3.242:9200</jest.urls>

        </properties>

    </profile>

</profiles>

mvn clean package-DskipTests -Pdev

è

Hello\${jest.urls}

jest.urls=http://n2:9200,http://n4:9200

mvn clean package-DskipTests -Pproduction

è

Hello\${jest.urls}

jest.urls=http://192.168.3.241:9200,http://192.168.3.242:9200

自定義過濾器 Custom resources filters

With version 2.5 you are now able to build your own customresources filter(s).

Your custom resources filter classes must implements org.apache.maven.shared.filtering.MavenResourcesFiltering.

CustomResources Filter Implementation

Your custom resources filter classes must be marked as aPlexus Component. Below a sample with a roleHint itFilter.

1.  /**      
2.   * @plexus.component role="org.apache.maven.shared.filtering.MavenResourcesFiltering"       
3.   *                   role-hint="itFilter"      
4.   */      
5.  public class ItFilter      
6.      implements MavenResourcesFiltering      

Then you must activate in your build the mojo which willscan javadoc annotations to transform thoses to plexus component metadata.

1.    <plugin>      
2.      <groupId>org.codehaus.plexus</groupId>      
3.      <artifactId>plexus-maven-plugin</artifactId>      
4.      <version>1.3.4</version>      
5.      <executions>      
6.        <execution>      
7.          <goals>      
8.            <goal>descriptor</goal>      
9.          </goals>      
10.      </execution>      
11.    </executions>      
12.  </plugin>      

Dependencydeclaration

Your classes must be available in the maven-resources-pluginclasspath, this can be done with adding your artifact to the plugindependencies.

1.  <project>      
2.    ...      
3.    <build>      
4.      <plugins>      
5.        <plugin>      
6.          <groupId>org.apache.maven.plugins</groupId>      
7.          <artifactId>maven-resources-plugin</artifactId>      
8.          <version>3.1.0</version>      
9.          <configuration>      
10.          ...      
11.        </configuration>      
12.        <dependencies>      
13.          <dependency>      
14.            <groupId>custom resources filters artifact groupId</groupId>      
15.            <artifactId>custom resources filters artifact artifactId</artifactId>      
16.            <version>custom resources filters artifact version</version>      
17.          </dependency>      
18.        </dependencies>      
19.      </plugin>      
20.    </plugins>      
21.    ...      
22.  </build>      
23.  ...      
24.</project>      

Useof your Custom Resource Filter with the maven-resources-plugin

You must now declare you custom filter in the plugin.mavenFilteringHint must respect same syntax as your Plexus Component roleHint.

1.    <plugin>      
2.      <groupId>org.apache.maven.plugins</groupId>      
3.      <artifactId>maven-resources-plugin</artifactId>      
4.      <version>3.1.0</version>      
5.      <configuration>      
6.        ...      
7.        <mavenFilteringHints>      
8.          <mavenFilteringHint>itFilter</mavenFilteringHint>      
9.        </mavenFilteringHints>      
10.     </configuration>      
11.     ...      
12.   </configuration>      
13. </plugin>      

轉載于:https://www.cnblogs.com/xiang--liu/p/9710232.html