maven-maven-resources-plugin插件使用


修改默認讀取資源地址

默認情況下maven會讀取src/main/resources的資源打包到target的classes 可以通過進行修改

    <build>
        <resources>
                <!--讀取資源1-->
        <resource>
            <directory>src/main/resources1</directory>
        </resource>
                <!--讀取資源2-->
        <resource>
            <directory>src/main/resources2</directory>
        </resource>
        </resources>
        <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <!--使用默認的變量分割符即${} 可以自己定義格式-->
            <configuration>
                <useDefaultDelimiters>true</useDefaultDelimiters>
            </configuration>
            <version>3.1.0</version>
        </plugin>
    </plugins>
    </build>

占位符替換

src/main/resources 下的yml配置文件 打包后則會默認填充

spring:
  profiles:
    active: ${spring.profiles.active}
    name: ${name}

 

<!--定義占位符-->    
<properties>
        <java.version>1.8</java.version>
        <name>version</name>
        <spring.profiles.active>pro</spring.profiles.active>
    </properties>
    <!--也可以定義在profile里面 如果寫在profile就是針對profile的build-->
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <!--這個配置的意思是過濾上面指定屬性文件中的占位符,占位符是${變量名稱}這樣的形式,maven會自動讀取includes配置文件,然后解析其中的占位符,使用上面pom文件中定義的屬性進行替換-->
                <filtering>true</filtering>
                <includes>
                    <include>*.yml</include>
                </includes>
                <!--可用於排除某些-->
<!--                <excludes>-->
<!--                    <exclude>file</exclude>-->
<!--                </excludes>-->
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <!--使用默認的變量分割符即${} 可以自己定義格式-->
                <configuration>
                    <useDefaultDelimiters>true</useDefaultDelimiters>
                </configuration>
                <version>3.1.0</version>
            </plugin>
        </plugins>
    </build>

多環境配置 只需要在profile定義即可

 mvn clean install -Dmaven.test.skip -Denv=dev  打包后 則會填充對應的的占位符,注:profile的優先級比全局的properties定義優先級要高

<profiles>
    <profile>
        <id>dev</id>
        <activation>
            <!--沒有指定變量默認激活-->
            <activeByDefault>true</activeByDefault>
            <!--maven打包的變量名和參數名字 如: mvn clean install -Dmaven.test.skip -Denv=dev-->
            <property>
                <name>env</name>
                <value>dev</value>
            </property>
        </activation>
        <!--占位符定義-->
        <properties>
            <spring.profiles.active>dev</spring.profiles.active>
            <name>dev</name>
        </properties>
    </profile>
    <profile>
        <id>test</id>
        <activation>
            <!--沒有指定變量默認激活-->
            <activeByDefault>true</activeByDefault>
            <!--maven打包的變量名和參數名字 如: mvn clean install -Dmaven.test.skip -Denv=dev-->
            <property>
                <name>env</name>
                <value>test</value>
            </property>
        </activation>
        <!--占位符定義-->
        <properties>
            <spring.profiles.active>test</spring.profiles.active>
            <name>version2</name>
        </properties>
    </profile>
    <profile>
        <id>pro</id>
        <activation>
            <!--沒有指定變量默認激活-->
            <activeByDefault>true</activeByDefault>
            <!--maven打包的變量名和參數名字 如: mvn clean install -Dmaven.test.skip -Denv=dev-->
            <property>
                <name>env</name>
                <value>pro</value>
            </property>
        </activation>
        <!--占位符定義-->
        <properties>
            <spring.profiles.active>pro</spring.profiles.active>
            <name>version3</name>
        </properties>
    </profile>
</profiles>

打包排除和包含文件

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
              <include>**/*.txt</include>
              <include>**/*.rtf</include>
            </includes>
            <excludes>
              <exclude>**/*.bmp</exclude>
              <exclude>**/*.jpg</exclude>
              <exclude>**/*.jpeg</exclude>
              <exclude>**/*.gif</exclude>
            </excludes>
        </resource>
    <resources>
</build>

改變輸出目錄

<resource>
                <directory>src/main/resources</directory>
                <targetPath>d</targetPath>
            </resource>

 如:

 

 打包后

 

 

    <!-- 生產環境指定profile為acm,接入阿里雲應用配置服務 -->
    <profiles>
        <profile>
            <id>acm</id>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
                    <version>0.2.1.RELEASE</version>
                </dependency>
            </dependencies>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources/canal/pro/</directory>
                        <targetPath>canal</targetPath>
                    </resource>
                    <resource>
                        <directory>src/main/resources</directory>
                        <excludes>
                            <exclude>canal/pro/*.yml</exclude>
                            <exclude>canal/test/*.yml</exclude>
                        </excludes>
                    </resource>
                </resources>
            </build>
        </profile>
        <profile>
            <id>test</id>
            <activation>
                <!--沒有指定變量默認激活-->
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources/canal/test/</directory>
                        <targetPath>canal</targetPath>
                    </resource>
                    <resource>
                        <directory>src/main/resources</directory>
                        <excludes>
                            <exclude>canal/test/*.yml</exclude>
                            <exclude>canal/pro/*.yml</exclude>
                        </excludes>
                    </resource>
                </resources>
            </build>
        </profile>
    </profiles>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM