使用maven-assembly-plugin移除resouces中的CRLF

問題現(xiàn)象

在Windows 7(64-bits)+eclipse Oxygen(4.7.3a)環(huán)境中,構(gòu)建dble(2.18.07.2及之前)的過程中,構(gòu)建結(jié)果(dble-2.17.09.1-YYYYMMDDHHMMSS-linux.tar.gz)的conf/wrapper.conf文件的換行符是CRLF(Windows換行符)——導(dǎo)致啟動dble的時候,報錯wrapper.conf有誤。

問題分析

在源代碼原件(src/main/resouces/wrapper.conf)中,換行符是正確的LF(Unix換行符)。嘗試了在Linux上編譯dble,CRLF問題就不會出現(xiàn)。這說明在構(gòu)建過程中,有plugin受環(huán)境變量的影響,替換了wrapper.conf的換行符。

解決方法

一般來說,應(yīng)該是得揪出替換wrapper.conf的換行符的Maven的plugin,然后看看它有沒有參數(shù)能夠調(diào)整——但由于對dble的構(gòu)建lifecycle的行為不太熟悉,于是沒有正面剛這個問題,而是干預(yù)打包階段的動作,讓打包插件幫我把換行符再替換回來。

dble使用maven-assembly-plugin進行打包,其配置文件src/main/assembly/assembly-linux.xml中,可以通過調(diào)整<fileSet>的lineEnding屬性(property),來設(shè)置打包前,對源目錄(構(gòu)建過程的前些階段中編譯好的文件)進行換行符替換。

在構(gòu)建中,靠前的階段,處理過wrapper.conf后,會將它扔到target/generated-resources/appassembler/jsw/dble/conf里,等待打包。所以,對于這個問題,我們的解決方法,是在配置文件(assembly-linux.xml)中,給對應(yīng)的<fileSet>加上<lineEnding>:

<fileSet>

    <!-- 打包前將該目錄下的文件換行符替換成LF -->
    <lineEnding>unix</lineEnding>

    <directory>target/generated-resources/appassembler/jsw/dble/conf</directory>
    <outputDirectory>dble/conf</outputDirectory>
    <includes>
        <include>*</include>
    </includes>
</fileSet>

經(jīng)過實測,問題解決。

預(yù)防措施

繼續(xù)分析構(gòu)建的lifecycle,找到打包前處理wrapper.conf并替換了換行符的plugin。查找它的文檔,看看能否限制它不要替換換行符或限定它只替換成LF(dble默認跑在Linux中)。然后向dble項目自身提PR。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,275評論 6 342
  • 轉(zhuǎn)自http://liugang594.iteye.com/blog/2093607 maven-assembly...
    端木軒閱讀 5,686評論 0 6
  • 不一會燦烈和白賢搬回來兩盤飲料,燦烈把每個人喜歡喝的分發(fā)到各自的面前‘Kris隨藝興喝綠茶;鹿晗得是香芋味...
    奶包味的白久閱讀 307評論 0 1
  • 篩法描述: 把 2 到 n 中所有的數(shù)列出來, 然后從 2 開始, 先劃掉 n 內(nèi)所有 2 的倍數(shù), 然后每次從下...
    tingshuo123閱讀 1,584評論 0 0

友情鏈接更多精彩內(nèi)容