Maven學習總結(36)——Apache Maven 3.5.0搶鮮看
阿新 • • 發佈:2019-01-24
Apache家族一直備受程式設計師的關注,繼Apache Maven 3.3.9之後,直接跳到3.5.0,至於3.4.0,程式設計師怕是看不到了,不過也沒什麼關係,功能夠強大就足以!來看看是哪些新功能足以讓3.4.0系列直接消失。
CloudBees的Elite開發人員和架構師,Apache基金會的成員,社群貢獻者和PMC,在Maven郵件列表的一封信中宣佈,Maven 3.4.0已經被廢棄,下一個版本[Apache Maven 3.5.0]現在已經可用。
大部分程式設計師應該早有預知:3.4.0將被廢除。Connolly在2017年初就公佈了這個變化,Maven3.4.0的原始計劃是有效替代Eclipse Aether專案的無效操作(已經在Eclipse Foundation中退休),
現在稱為Apache Maven Resolver的遷移程式碼。此外,該計劃還要求了關於日誌著色的正交變化和啟動器指令碼錯誤修復。
由於一些誤解,引入了許多其他變化,可以看作是修改依賴關係和類路徑的構建方式。雖然Maven方面希望將這些更改作為bug修復釋出,但也必須提供明確的開發進度。
他們想要修復的一些錯誤需要更改解析器程式碼,開發人員認為標記遷移程式碼的基準是重要的,因此它應該成為3.3.9的替代品。
Apache Maven 3.5.0的重要更改如下:
ANSI顏色新增到控制檯輸出
在mvn指令碼中修復有關空格,引號,特殊符號的各種錯誤字元等也與.mvn / -files結合使用
從Eclipse Aether切換到Maven Artifact Resolver
Connolly解釋說,釋出的原始目標是在遷移到Apache Maven專案之後,使用完全相同的程式碼替換Aether,然後對解析器程式碼以及Maven的其他區域進行修復。
程式碼在兩個基礎之間的遷移所花費的時間比預期長,因此,種種改變對Maven的承諾超出了3.4.0的範圍。
Bug修復
[MNG-5297] - 站點應該提示“prerequisites.maven已被棄用”
[MNG-5368]-在dependencyManagement定義中版本範圍不正確時丟擲UnsupportedOperationException
[MNG-5629] - DefaultUpdateCheckManager.read的ClosedChannelException
[MNG-5815] - “mvn.cmd”在使用“&&”時不能正常顯示故障
[MNG-5823] - mvnDebug不能與M2_HOME一起使用空格 - 缺少引號
[MNG-5829] - mvn shell指令碼在Solaris 10上失敗並出現語法錯誤
[MNG-5836] - 日誌配置被$ M2_HOME / lib / ext / *.jar覆蓋
[MNG-5852] - mvn shell指令碼呼叫/ bin / sh但需要Bash函式
[MNG-5895] - CI友好使用$ {..}的問題,已經通過pom檔案中的屬性定義了。
[MNG-5958]-java.lang.String不能轉換為org.apache.maven.lifecycle.mapping.LifecyclePhase
[MNG-5961] - Maven可能不知道log4j2
[MNG-5962] - 當前目錄之間有空格時,mvn.cmd失敗
[MNG-5963] - mvn.cmd不返回ERROR_CODE
[MNG-6022] - 如果目錄包含&符號,則mvn.cmd失敗
[MNG-6053] - 不安全的系統屬性複製在MavenRepositorySystemUtils中,導致NPE
[MNG-6057] - CI友好使用$ {..}反應堆訂單的問題已更改
[MNG-6090] - CI友好的屬性打破子模組構建
[MNG-6105] - properties.internal.SystemProperties.addSystemProperties()不是真正的執行緒安全
[MNG-6109] - PluginDescriptor不讀取引數的值
[MNG-6117] - $ {session.parallel}未正確設定
[MNG-6144] - DefaultWagonManagerTest#testGetMissingJarForced()傳遞不正確的值
[MNG-6166] - mvn依賴關係:由於缺少傳遞依賴關係,go-offline失敗jdom:jdom:jar:1.1
[MNG-6168] - 修復未封閉的流
[MNG-6170] - 使用Multithreaded -T X版本的NPE:set -DnewVersion = 1.0-SNAPSHOT
[MNG-6171] - REGRESSION:關於使用非執行緒安全標記的外掛的警告不再顯示
[MNG-6172] - 命令列系統屬性選項的優先順序已更改
[MNG-6173] - MavenSession.getAllProjects()應該返回反應堆中的所有專案
[MNG-6176] - Javadoc錯誤阻止使用Java 8釋出
[MNG-6177] - Windows和Unix啟動器的-file命令列選項不適用於目錄名稱,如“空格和特殊字元”
[MNG-6181] - HttpClient在除錯日誌級別產生大量噪聲
[MNG-6183] - 依賴管理除錯訊息更正。
[MNG-6190] - maven-resolver-provider的DefaultArtifactDescriptorReader具有不匹配的建構函式和initService方法
[MNG-6191] - mvn -f抱怨MacOS下的非法readlink選項
[MNG-6192] - 分發zip檔案具有無序條目
[MNG-6195] - 在mvn啟動器指令碼中使用一致的引用表單
[MNG-6198] - 當使用-f指定pom位置時,mvn指令碼找不到.mvn目錄
依賴升級
[MNG-5967] - 依賴關係更新
[MNG-6110] - 將Aether升級到Maven Resolver
改進
[MNG-5579] - 從shell和批處理指令碼統一錯誤輸出/檢查邏輯
[MNG-5607] - 不在mvn shell /命令指令碼中使用M2_HOME
[MNG-5883] - 關閉不必要的傳統本地儲存庫警告
[MNG-5889] - 使用-file時,應該選擇.mvn目錄
[MNG-5904] - 刪除整個Ant構建
[MNG-5931] - 修復檔案
[MNG-5934] - PMD識別的字串處理問題
[MNG-5946] - 修正README.txt中的連結等,這是交付的一部分
[MNG-5968] - 預設外掛版本更新
[MNG-5975] - 在CLIReportingUtils中使用Java 7的SimpleDateFormat#formatTimestamp
[MNG-5977] - 提高MavenTransferListener實現的輸出可讀性
[MNG-5993] -在pluginManagement中缺少/空的artifactId和版本的情況下出現混淆的錯誤資訊
[MNG-6001] - 將%HOME%替換為mvn.cmd中的%USERPROFILE%
[MNG-6003] - 大幅減少JAVA_HOME發現程式碼
[MNG-6014] - 刪除ejb3的ArtifactHandler
[MNG-6017] - 刪除迴圈中的ArtifactHandler
[MNG-6030] -在maven 3.0.5版本之後,ReactorModelCache不能有效地使用,這會導致大量的記憶體佔用
[MNG-6032] - 基於彙編描述符中的絕對路徑構建期間的警告。
[MNG-6068] - pom XSD和參考文件中的文件預設範圍編譯
[MNG-6078] - 無法覆蓋已在.mvn / maven.config中定義的屬性
[MNG-6081] - 日誌重構、變數替換方法呼叫
[MNG-6102] - 在m2.conf中引入$ {maven.conf}
[MNG-6115]-將Jansi本機庫搜尋路徑新增到起始指令碼中,以避免在每次執行時提取到臨時檔案
[MNG-6145] - 刪除component.xml中不存在的m2
[MNG-6146] - 幾個小的風格和拼寫改進程式碼和文件
[MNG-6147] - MetadataResolutionResult#getGraph()包含重複的if子句
[MNG-6150] - 3.5.0的Javadoc改進
[MNG-6163] - 在shell啟動指令碼中引入CLASSWORLDS_JAR
[MNG-6165] - 廢棄和替換拼寫錯誤的公共API
[MNG-6179] - 刪除未使用的先決條件
[MNG-6185] - 將doclettag說明替換為AbstractMojo javadoc中的註釋
[MNG-6189] - 如果maven-site-plugin配置包含reportPlugins元素,則為WARN
新功能
[MNG-3507] - ANSI顏色記錄,可提高輸出可視性
[MNG-5878]-在每個計算的URL(專案,SCM,站點)中新增對模組名稱的支援!= artifactId:special.project.directory屬性
[MNG-6093]-建立一個簡單的slf4j的提供程式擴充套件,以支援顏色渲染[MNG-6182] - ModelResolver介面增強功能:添加了支援版本範圍的resolveModel(Dependency)
任務
[MNG-5954]-刪除過期的maven-embedder/src/main / resources / META-INF / MANIFEST.MF
[MNG-6106] - 從m2.conf中刪除maven.home預設值設定器
[MNG-6136] - 將Maven Wagon從2.10升級到2.12
[MNG-6137] - 清理由不完整的Wagon HTTP Provider排除引起的重複依賴關係
[MNG-6138] - 刪除過時的訊息_ *。屬性窗體maven-core
[MNG-6140] - 使用解析器+解析器提供者+ slf4j提供程式更新文件的依賴圖
[MNG-6152] - 新增一個Jenkins檔案,以便builds.apache.org可以使用多分支管道
後續
[MNG-2199] - 支援父元素中的版本範圍
[MNG-6088] - 分叉執行成功後,新增一個空行
[MNG-6092] - 警告prerequisites.maven是否用於非外掛專案
根據Connolly的說法,下一個版本將如何命名,還要取決於更新內容,沒準下一次出現在程式設計師眼前的就是3.6.0版本了。
CloudBees的Elite開發人員和架構師,Apache基金會的成員,社群貢獻者和PMC,在Maven郵件列表的一封信中宣佈,Maven 3.4.0已經被廢棄,下一個版本[Apache Maven 3.5.0]現在已經可用。
大部分程式設計師應該早有預知:3.4.0將被廢除。Connolly在2017年初就公佈了這個變化,Maven3.4.0的原始計劃是有效替代Eclipse Aether專案的無效操作(已經在Eclipse Foundation中退休),
現在稱為Apache Maven Resolver的遷移程式碼。此外,該計劃還要求了關於日誌著色的正交變化和啟動器指令碼錯誤修復。
由於一些誤解,引入了許多其他變化,可以看作是修改依賴關係和類路徑的構建方式。雖然Maven方面希望將這些更改作為bug修復釋出,但也必須提供明確的開發進度。
他們想要修復的一些錯誤需要更改解析器程式碼,開發人員認為標記遷移程式碼的基準是重要的,因此它應該成為3.3.9的替代品。
Apache Maven 3.5.0的重要更改如下:
ANSI顏色新增到控制檯輸出
在mvn指令碼中修復有關空格,引號,特殊符號的各種錯誤字元等也與.mvn / -files結合使用
從Eclipse Aether切換到Maven Artifact Resolver
Connolly解釋說,釋出的原始目標是在遷移到Apache Maven專案之後,使用完全相同的程式碼替換Aether,然後對解析器程式碼以及Maven的其他區域進行修復。
程式碼在兩個基礎之間的遷移所花費的時間比預期長,因此,種種改變對Maven的承諾超出了3.4.0的範圍。
Bug修復
[MNG-5297] - 站點應該提示“prerequisites.maven已被棄用”
[MNG-5368]-在dependencyManagement定義中版本範圍不正確時丟擲UnsupportedOperationException
[MNG-5629] - DefaultUpdateCheckManager.read的ClosedChannelException
[MNG-5815] - “mvn.cmd”在使用“&&”時不能正常顯示故障
[MNG-5823] - mvnDebug不能與M2_HOME一起使用空格 - 缺少引號
[MNG-5829] - mvn shell指令碼在Solaris 10上失敗並出現語法錯誤
[MNG-5836] - 日誌配置被$ M2_HOME / lib / ext / *.jar覆蓋
[MNG-5852] - mvn shell指令碼呼叫/ bin / sh但需要Bash函式
[MNG-5895] - CI友好使用$ {..}的問題,已經通過pom檔案中的屬性定義了。
[MNG-5958]-java.lang.String不能轉換為org.apache.maven.lifecycle.mapping.LifecyclePhase
[MNG-5961] - Maven可能不知道log4j2
[MNG-5962] - 當前目錄之間有空格時,mvn.cmd失敗
[MNG-5963] - mvn.cmd不返回ERROR_CODE
[MNG-6022] - 如果目錄包含&符號,則mvn.cmd失敗
[MNG-6053] - 不安全的系統屬性複製在MavenRepositorySystemUtils中,導致NPE
[MNG-6057] - CI友好使用$ {..}反應堆訂單的問題已更改
[MNG-6090] - CI友好的屬性打破子模組構建
[MNG-6105] - properties.internal.SystemProperties.addSystemProperties()不是真正的執行緒安全
[MNG-6109] - PluginDescriptor不讀取引數的值
[MNG-6117] - $ {session.parallel}未正確設定
[MNG-6144] - DefaultWagonManagerTest#testGetMissingJarForced()傳遞不正確的值
[MNG-6166] - mvn依賴關係:由於缺少傳遞依賴關係,go-offline失敗jdom:jdom:jar:1.1
[MNG-6168] - 修復未封閉的流
[MNG-6170] - 使用Multithreaded -T X版本的NPE:set -DnewVersion = 1.0-SNAPSHOT
[MNG-6171] - REGRESSION:關於使用非執行緒安全標記的外掛的警告不再顯示
[MNG-6172] - 命令列系統屬性選項的優先順序已更改
[MNG-6173] - MavenSession.getAllProjects()應該返回反應堆中的所有專案
[MNG-6176] - Javadoc錯誤阻止使用Java 8釋出
[MNG-6177] - Windows和Unix啟動器的-file命令列選項不適用於目錄名稱,如“空格和特殊字元”
[MNG-6181] - HttpClient在除錯日誌級別產生大量噪聲
[MNG-6183] - 依賴管理除錯訊息更正。
[MNG-6190] - maven-resolver-provider的DefaultArtifactDescriptorReader具有不匹配的建構函式和initService方法
[MNG-6191] - mvn -f抱怨MacOS下的非法readlink選項
[MNG-6192] - 分發zip檔案具有無序條目
[MNG-6195] - 在mvn啟動器指令碼中使用一致的引用表單
[MNG-6198] - 當使用-f指定pom位置時,mvn指令碼找不到.mvn目錄
依賴升級
[MNG-5967] - 依賴關係更新
[MNG-6110] - 將Aether升級到Maven Resolver
改進
[MNG-5579] - 從shell和批處理指令碼統一錯誤輸出/檢查邏輯
[MNG-5607] - 不在mvn shell /命令指令碼中使用M2_HOME
[MNG-5883] - 關閉不必要的傳統本地儲存庫警告
[MNG-5889] - 使用-file時,應該選擇.mvn目錄
[MNG-5904] - 刪除整個Ant構建
[MNG-5931] - 修復檔案
[MNG-5934] - PMD識別的字串處理問題
[MNG-5946] - 修正README.txt中的連結等,這是交付的一部分
[MNG-5968] - 預設外掛版本更新
[MNG-5975] - 在CLIReportingUtils中使用Java 7的SimpleDateFormat#formatTimestamp
[MNG-5977] - 提高MavenTransferListener實現的輸出可讀性
[MNG-5993] -在pluginManagement中缺少/空的artifactId和版本的情況下出現混淆的錯誤資訊
[MNG-6001] - 將%HOME%替換為mvn.cmd中的%USERPROFILE%
[MNG-6003] - 大幅減少JAVA_HOME發現程式碼
[MNG-6014] - 刪除ejb3的ArtifactHandler
[MNG-6017] - 刪除迴圈中的ArtifactHandler
[MNG-6030] -在maven 3.0.5版本之後,ReactorModelCache不能有效地使用,這會導致大量的記憶體佔用
[MNG-6032] - 基於彙編描述符中的絕對路徑構建期間的警告。
[MNG-6068] - pom XSD和參考文件中的文件預設範圍編譯
[MNG-6078] - 無法覆蓋已在.mvn / maven.config中定義的屬性
[MNG-6081] - 日誌重構、變數替換方法呼叫
[MNG-6102] - 在m2.conf中引入$ {maven.conf}
[MNG-6115]-將Jansi本機庫搜尋路徑新增到起始指令碼中,以避免在每次執行時提取到臨時檔案
[MNG-6145] - 刪除component.xml中不存在的m2
[MNG-6146] - 幾個小的風格和拼寫改進程式碼和文件
[MNG-6147] - MetadataResolutionResult#getGraph()包含重複的if子句
[MNG-6150] - 3.5.0的Javadoc改進
[MNG-6163] - 在shell啟動指令碼中引入CLASSWORLDS_JAR
[MNG-6165] - 廢棄和替換拼寫錯誤的公共API
[MNG-6179] - 刪除未使用的先決條件
[MNG-6185] - 將doclettag說明替換為AbstractMojo javadoc中的註釋
[MNG-6189] - 如果maven-site-plugin配置包含reportPlugins元素,則為WARN
新功能
[MNG-3507] - ANSI顏色記錄,可提高輸出可視性
[MNG-5878]-在每個計算的URL(專案,SCM,站點)中新增對模組名稱的支援!= artifactId:special.project.directory屬性
[MNG-6093]-建立一個簡單的slf4j的提供程式擴充套件,以支援顏色渲染[MNG-6182] - ModelResolver介面增強功能:添加了支援版本範圍的resolveModel(Dependency)
任務
[MNG-5954]-刪除過期的maven-embedder/src/main / resources / META-INF / MANIFEST.MF
[MNG-6106] - 從m2.conf中刪除maven.home預設值設定器
[MNG-6136] - 將Maven Wagon從2.10升級到2.12
[MNG-6137] - 清理由不完整的Wagon HTTP Provider排除引起的重複依賴關係
[MNG-6138] - 刪除過時的訊息_ *。屬性窗體maven-core
[MNG-6140] - 使用解析器+解析器提供者+ slf4j提供程式更新文件的依賴圖
[MNG-6152] - 新增一個Jenkins檔案,以便builds.apache.org可以使用多分支管道
後續
[MNG-2199] - 支援父元素中的版本範圍
[MNG-6088] - 分叉執行成功後,新增一個空行
[MNG-6092] - 警告prerequisites.maven是否用於非外掛專案
根據Connolly的說法,下一個版本將如何命名,還要取決於更新內容,沒準下一次出現在程式設計師眼前的就是3.6.0版本了。