Maven源碼研究之一——準備工做

Maven是什麼就不用多說了,做爲Apache下的頂級項目,Maven目前基本上已經成爲Java依賴管理的標準,一個公開發布的項目,沒有Maven座標基本是不合格的——即便你使用其餘工具,例如Ant或者Gradle構建。研究Maven主要是由於在上面吃虧比較多,最近恰好也有些定製的需求,因此就學習一下。html

最近也觀摩了一下咱們公司首席架構師的一套代碼,他的不少框架受到Maven的影響很深,從裏面看到一些神奇的用法,也正好學習一下。apache

Maven與Codehaus

介紹Maven前先介紹下Codehaus,其實他們沒有直接關係,可是源碼層面卻有千絲萬縷的聯繫。架構

Codehaus是由Bob McWhirter創辦的一個開源組織,旗下也有一些優秀項目,例如比較熱門的JVM腳本語言Groovy,以及JSON處理庫http://jackson.codehaus.org/等。app

爲何說有聯繫呢?由於Maven的創始人是Jason van Zyl,現任sonatype CTO。他同時也是Codehaus的聯合創始人,因此你能夠在Maven的代碼架構中,看到不少Codehaus的項目。例如IoC框架plexus、代碼生成工具Modello等。框架

若是真的要了解Maven源碼,這套東西是不可不知的。maven

Plexus

Plexus是一套IoC框架,它經過註解和XML來完成Bean的配置和注入,其用法和咱們熟悉的Spring很是相似。其實相比Spring,它基本沒有什麼亮點,發展也比較慢,這裏全當知識庫補充一下。這裏我不寫什麼介紹了,直接貼一個對照表吧。ide

<table> <tr> <td>名稱</td> <td>Spring</td> <td>Plexus</td> </tr> <tr> <td>配置文件</td> <td>application-context.xml(可定製)</td> <td>components.xml</td> </tr> <tr> <td>bean聲明</td> <td>&lt;bean&gt;</td> <td>&lt;component&gt;</td> </tr> <tr> <td>bean聲明(註解)</td> <td>&lt;@Component&gt;</td> <td>&lt;@Component/@Service…&gt;</td> </tr> <tr> <td>bean注入(註解)</td> <td>&lt;@Requirement&gt;</td> <td>&lt;@Autowired/@Resource&gt;</td> </tr> <tr> <td>建立容器</td> <td>ApplicationContext appContext = new ClassPathXmlApplicationContext("");</td> <td>PlexusContainer container= new DefaultPlexusContainer();</td> </tr> </table>工具

Modello

Modello是一個代碼生成工具,它能夠從一個模型文件產生多個POJO,以及這些POJO與XML的映射處理、以及XML的Schema等內容。在源碼目錄下面,咱們會看到一個mdo文件,那就是它了。它的作法好很差很差說,不過這個代碼生成的思路卻是能夠借鑑。學習

Modello

參考資料

相關文章
相關標籤/搜索