Maven 5的兩個重要變化
一位 Apache Maven 提交者最近寫了一篇關於他們的 Maven 5 計劃的文章。最重要的變化:
需要區分兩種 POM 型別:
- 構建 POM ,儲存在專案原始碼控制中,在構建時使用 v5 模式,需要能夠使用與新模式關聯的新功能的新 Maven 版本,
- 消費者 POM ,它以良好的舊 v4 模式釋出到 Maven Central,因此每個過去或未來的構建工具都可以像往常一樣繼續使用預構建的工件來獲取它們的依賴項。
這是一個重要的二分法,讓我很長時間都沒有意識到:
- POM 的使用者需要一些資料,例如,在其依賴項列表中擁有專案的使用者
- 二進位制構建器需要其他資料
在 Reddit 上,使用者 pmarschall 提到他們已經在Maven Flatten 外掛的幫助下分離了 Maven 當前版本中的關注點。
用法非常簡單。只需在該部分中新增以下程式碼plugins段:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>flatten-maven-plugin</artifactId> <version>1.2.5</version> <configuration> </configuration> <executions> <execution> <id>flatten</id> <phase>process-resources</phase> <goals> <goal>flatten</goal> </goals> </execution> <execution> <id>flatten.clean</id> <phase>clean</phase> <goals> <goal>clean</goal> </goals> </execution> </executions> </plugin> |
現在,如果你執行Maven process-resources階段,該外掛會建立一個縮短版的POM,名為.flattened-pom.xml。與初始POM相比,扁平化的POM除了座標外,只有三個部分:許可、依賴和資源。此外,Maven還解決了所有變數。如果你執行安裝階段,然後檢查本地Maven倉庫,你會發現POM與扁平化的POM相匹配,而不是主POM。如果你想生成扁平化的POM但不替換主POM,請使用-DupdatePomFile=false。
預設情況下,該外掛只保留許可證、依賴關係和儲存庫部分。你可以通過POM配置哪些部分需要保留,哪些不需要。例如,該外掛會刪除名字,但如果需要,你可以很容易地保留它。只需新增相關的配置。
<configuration> <pomElements> <name>keep</name> </pomElements> </configuration> |
上述方法給了你最大的靈活性。然而,外掛的開發者已經考慮到哪些配置捆綁是有意義的,並提供了開箱即用的配置。
總結
Maven Flatten外掛將構建和消費者POM分開。你不需要等到Maven 5的釋出。這是一個免費的東西,所以如果你是一個庫的提供者,你也許應該考慮使用它。
相關文章
- 5個重要的CCNP協議協議
- 記maven專案的兩個奇怪情況Maven
- C語言交換兩個變數的值的5種基本方法C語言變數
- 支援數字化轉型的5個變革管理技巧
- 執行計劃-5:第一個子操作的變化
- 交換兩個變數變數
- Swift交換兩個變數的值Swift變數
- 交換兩個整型變數變數
- 【DBA100人】網聯客CEO隋海峰:把握好職業生涯最重要的兩個5年
- 建立工程,編寫一個介面有兩個按鈕的程式,通過定時器控制這兩個按鈕上的文字變化。定時器
- 不使用臨時變數交換兩個變數的值變數
- 使用CRM管理銷售渠道的 5 個重要優勢
- 自查企業資料網是否安全的5個重要方法
- 前端知識科普:HTML5中重要的6個點!前端HTML
- c語言 - 交換兩個變數(不建立臨時變數)兩種方法C語言變數
- 如何不使用臨時變數,交換兩個變數的值。變數
- JavaScript判斷兩個變數是否相等JavaScript變數
- 面試題-JavaScript交換兩個變數的方法面試題JavaScript變數
- Linux AS 5中hugepage的一些變化Linux
- 【C語言】給定兩個整型變數的值,將兩個值的內容進行交換C語言變數
- 再分享兩個小問題變成大故障的案例
- 在 NetBeans 中打包 Maven 專案的兩種方式BeanMaven
- Go 1.21的2個語言變化Go
- 【maven】Maven打包後為何檔案大小改變了Maven
- idea設定了maven會自動變回C盤那個IdeaMaven
- 兩會閉幕|聊聊三個影響網路安全行業的重要資訊行業
- 異或運算的巧用 → 不用額外的變數,如何交換兩個變數的值?變數
- 數字化轉型,這5點最重要,其他都是瞎扯
- 論如何監聽一個物件的變化物件
- 而更為重要的是,“群艦”的駛入,讓我們對商業市場的三個新變化充滿期待
- MySQL最佳化的5個維度MySql
- MySQL效能優化的5個維度MySql優化
- 最佳化兩個簡單的巢狀迴圈巢狀
- 記兩個未初始化而導致的坑
- Maven 自動化部署Maven
- Maven自動化部署Maven
- 談談15年5月修復的兩個0day
- 自動化將改變工作性質的5種方式