maven-resources-plugin插件關於占位符不生效問題


 

插件版本:

<plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <!-- 覆蓋原有文件 -->
                    <!--<overwrite>true</overwrite>-->
                    <!--<outputDirectory>${project.build.outputDirectory}</outputDirectory>-->
                    <filters>
                        <!--<filter>src/main/resources/${env}/application.yml</filter>-->
                        <filter>src/main/resources/${env}/app.properties</filter>
                    </filters>
                    <resources>
                        <resource>
                            <!-- 指定resources插件處理哪個目錄下的資源文件 -->
                            <directory>src/main/resources/</directory>
                            <filtering>true</filtering>
                            <includes>
                                <include>**/*</include>
                            </includes>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

 

項目資源結構:

使用maven profile 傳入值將application.yml的變量值填充到spring下面xml中的占位符,實際發現無論怎么樣都不生效!!!!

 

 

最后懷疑是該插件不支持yml填充的原因,結果修改為:

 

 在傳入變量值發現一切OK! 

 

 

 

 

 

 

maven debug插件方案參見:https://medium.com/@prabushi/debug-maven-plugin-while-the-application-is-executed-b602ea2803f8

 

具體做法就是使用:mvnDebug命令,例如傳入一個Profile的命令式:mvnDebug package -P prod ;然后需要使用remote debug進行連接!!!

 

源碼分析:

org.apache.maven.shared.filtering.BaseFilter#createInterpolator 加載解析配置占位符的文件,通常就是properties文件。

 

org.apache.maven.shared.filtering.BaseFilter#getDefaultFilterWrappers(org.apache.maven.shared.filtering.AbstractMavenFilteringRequest)加載配置文件

 

 

 

最終其實使用的是org.apache.maven.shared.filtering.BaseFilter#loadProperties方法加載配置到Proerties對象中!!! 

 

 

結論就是:maven-resources-plug不支持yml作為占位符值的配置文件!!!就是不不支持yml格式文件,必須使用properties文件!!!!即如下錯誤:

 


免責聲明!

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



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