讀古今文學網 > Maven實戰 > 7.3 插件目標 >

7.3 插件目標

在進一步詳述插件和生命週期的綁定關係之前,必須先瞭解插件目標(Plugin Goal)的概念。我們知道,Maven的核心僅僅定義了抽像的生命週期,具體的任務是交由插件完成的,插件以獨立的構件形式存在,因此,Maven核心的分發包只有不到3MB的大小,Maven會在需要的時候下載並使用插件。

對於插件本身,為了能夠復用代碼,它往往能夠完成多個任務。例如maven-dependency-plugin,它能夠基於項目依賴做很多事情。它能夠分析項目依賴,幫助找出潛在的無用依賴;它能夠列出項目的依賴樹,幫助分析依賴來源;它能夠列出項目所有已解析的依賴,等等。為每個這樣的功能編寫一個獨立的插件顯然是不可取的,因為這些任務背後有很多可以復用的代碼,因此,這些功能聚集在一個插件裡,每個功能就是一個插件目標。

maven-dependency-plugin有十多個目標,每個目標對應了一個功能,上述提到的幾個功能分別對應的插件目標為dependency:analyze、dependency:tree和dependency:list。這是一種通用的寫法,冒號前面是插件前綴,冒號後面是該插件的目標。類似地,還可以寫出compiler:compile(這是maven-compiler-plugin的compile目標)和surefire:test(這是maven-surefire-plugin的test目標)。