讀古今文學網 > Maven實戰 > 7.7 從命令行調用插件 >

7.7 從命令行調用插件

如果在命令行運行mvn-h來顯示mvn命令幫助,就可以看到如下的信息:

該信息告訴了我們mvn命令的基本用法,options表示可用的選項,mvn命令有20多個選項,這裡暫不詳述,讀者可以根據說明來瞭解每個選項的作用。除了選項之外,mvn命令後面可以添加一個或者多個goal和phase,它們分別是指插件目標和生命週期階段。第7.2.5節已經詳細介紹了如何通過該參數控制Maven的生命週期。現在我們關心的是另外一個參數:goal。

我們知道,可以通過mvn命令激活生命週期階段,從而執行那些綁定在生命週期階段上的插件目標。但Maven還支持直接從命令行調用插件目標。Maven支持這種方式是因為有些任務不適合綁定在生命週期上,例如maven-help-plugin:describe,我們不需要在構建項目的時候去描述插件信息,又如maven-dependency-plugin:tree,我們也不需要在構建項目的時候去顯示依賴樹。因此這些插件目標應該通過如下方式使用:

不過,這裡還有一個疑問,describe是maven-help-plugin的目標沒錯,但冒號前面的help是什麼呢?它既不是groupId,也不是artifactId,Maven是如何根據該信息找到對應版本插件的呢?同理,為什麼不是maven-dependency-plugin:tree,而是dependency:tree?

解答該疑問之前,可以先嘗試一下如下的命令:

這兩條命令就比較容易理解了,插件的groupId、artifactId、version以及goal都得以清晰描述。它們的效果與之前的兩條命令基本是一樣的,但顯然前面的命令更簡潔,更容易記憶和使用。為了達到該目的,Maven引入了目標前綴的概念,help是maven-help-plugin的目標前綴,dependency是maven-dependency-plugin的前綴,有了插件前綴,Maven就能找到對應的artifactId。不過,除了artifactId,Maven還需要得到groupId和version才能精確定位到某個插件。下一節將詳細解釋這個過程。