咱們知道,Maven的核心僅僅定義了抽象的生命週期,具體的任務是交由插件完成的。插件以獨立的構件形式存在,所以Maven的核心分發包很小,只有幾M大小,Maven會在須要的時候下載並使用插件。maven
對於插件自己,爲了可以複用代碼,它每每可以完成多個任務。例如maven-dependency-plugin,它可以基於項目依賴作不少事情。它可以分析項目依賴,幫助找出潛在的無用依賴;它可以列出項目的依賴樹,幫助分析依賴來源;它可以列出項目全部已解析的依賴等等。爲每一個這樣的功能編寫一個獨立的插件顯然是不可取的,由於這些任務背後有不少能夠複用的代碼。所以這些功能彙集在一個插件裏,每一個功能就是一個插件目標。插件
maven-dependency-plugin有十多個目標,每一個目標對應了一個功能,上述提到的幾個功能分別對應的插件目標爲dependency:analyze、dependency:tree、dependency:list。這是一種通用的寫法,冒號前面是插件前綴,後面是該插件的目標。生命週期