《Maven官方文件》Maven 開發
原文連結 譯者:carvendy
Maven 開發
這文件描述怎麼入門開發Maven。這是一個獨立頁來描述怎麼構建Maven的。
找一些工作來做
首先你需要一些事情來做!解決方案可以在幾個JIRA專案中找到。
- JIRA解決方案 當你找到一個你需要的解決方案,工作想在解決方案中加入日誌,所核心開發和其他人民在尋找以瞭解其他人已經在什麼。
哪裡是原始碼?
不要忘記單元測試!
你將找到很多單元測試在maven-3的樹中。如果可能,建立或者修改單元測試證明問題並修復。
如果問題例子不能被安裝的單元測試,加入到整合測試。之前提交分支,在任何用例,你用該執行所有整合測試。測試需要空的資源倉庫。看
建立和提交補丁
當你已經解決了一個問題或者是完成了一個成果,建立一個補丁並加入到討論的問題當中。建立補丁的指引:
- 補丁是倉庫,不是標籤。除此之外,你的補丁是已經過時的,而且沒有何時的開發頭。
- 總是從你的maven專案根目錄建立。例如,pom.xml就在哪裡。
- 如果你的這部分工作沒有JIRA問題,現在建立一個JIRA版本。
- 檔案的名字是MNG-<issue number>-<artifact id>.patch。
- 將補丁放到你所處理的JIRA問題(不要它的拷貝註釋)。當新增補丁的時候,添加註釋說明你做了什麼。很快,一些人將會同意這個補丁和關閉問題。
一個建立補丁命令列的例子:
$ svn diff > MNG-123-maven-core.patch
如果挑選一個問題並已經存在了分支,你可以從這個補丁 JIRA獲取,並使用它來工作。如果你使用UNIX 平臺或者 Cygwinwget和patch命令是可用的。
$ wget -O - -q <URL to the patch from JIRA> | patch -p0
如果補丁在你本地檔案MNG-123.patch而且你想同意使用這個命令:
$ patch -p0 < MNG-123.patch
一些筆記:
- 如果使用其他工具建立補丁,要確認補丁不在絕對路徑之中。補丁在絕對路徑是沒有用的,很多時候沒有和你相同的目錄結構。
- 確認你符合我們的程式碼規範,是更多。
補丁接納的條件
這裡有一系列關於補丁條件,判斷依據:
- 是否有效的而且是有打算的。這是很明顯的。
- 它是否符合專案的意圖。有些補丁可能是不可採取,因為它和當前的開發社群有著不同的意圖。在貢獻補丁之前需要討論好問題,所以你不確定的話,就先在郵件列表裡面討論一下。如果你有不同的意見,歡迎你來討論(有新的意見)並呼籲郵件列表上的人一起討論。
- 是否包含測試。任何補丁相關的功能都需要有單元測試或者整合測試。這可以很明顯地修復bug(這是需要的),如果沒有這個作為基礎就不行了。儘量小,改變的時候也不會影響自動化測試的覆蓋面。作一個社群,關注當前新增的覆蓋面,因為這些區域沒有受到自動化測試。
- 是否包含文件。所有新的功需要檔案記錄反饋給使用者,如果文件很粗糙那麼功能的推廣就會很慢。雖然粗糙是可以被接受的,但是不完整就不可以了。在自動化測試的時候,是儘量通過文件覆蓋的內容。
最重要的是不要氣餒。同樣需求的提交者應該對彼此好一點。並記住,歡迎你來貢獻。
涉及的專案:
Maven 有少部分依賴這些專案:
- Plexus
plexus 是一個成熟的容器,支援不同元件的生命週期。這是原生的生命週期,就像是現代的IOC容器,使用需要欄位注入來配置。所有Maven的核心功能是Plexus是元件。
瞭解更多關於 Plexus.
- Modello
Modello 是簡單的工具,代表物件模板,用來生成程式碼和資源。Maven使用Modello來生成所有Java物件,XML的讀寫,XML Schema和HTML 文件。
瞭解更多Modello。
- Mojo
“Mojo”給Maven做了兩件事情:Maven’s外掛API和獨立的Mojohaus管理大量外掛。
Mojohaus專案本來是Maven非核心外掛中。一些比較低的功能逐漸變成了這個專案的一部分。
子專案
- Maven Surefire
Surefire是一個測試框架。它使用了常規的JUnit測試所以你不需要改變程式碼來使用。它支援BeanShell和Jython指令碼測試,有特殊的“電池”來測試驗收和Web測試的XML-RPC程式碼功能測試。
讀更多關於Surefire。
- Maven Doxia
- Maven SCM
Maven SCM (原始碼控制管理)是在Maven的依賴中是可以重複使用的API,它被用於你關於SCM涉及到的Maven外掛。Maven的部分核心沒有依賴 Maven SCM.
讀更多關於SCM。
- Maven Wagon
Maven Wagon是一個獨立的API,轉換檔案和資料夾。Maven的核心使用了Wagon API來下載和上傳元件和元件元資料,還有網站外掛使用它來發布到網站。
讀更多關於Wagon