mvn是執行maven的指令,在day01的環境安裝你已經下第一個指令mvn -v
,在dayXX你執行mvn archetypes:generate
是你第一個使用的套件,去了解commandline的指令有助於我們在使用IDE與maven整合時的操作,才不會IDE執行maven時報錯不知道該如何處理
我們可以透過幾種方來設置我們要執行的Maven最詳細參考官網https://maven.apache.org/configure.html
maven.config
、jvm.config
、extensions.xml
執行maven可以有以下幾種方式mvn [options] [<goal(s)>] [<phase(s)>]
mvn [options]
,你可以直接執行options像是我們先前使用的mvn -v
mvn [<phase(s)>]
,你可以直接使用maven生命週期的phase,例如我們先前使用的mvn package
,maven生命週期詳細說明留在明日再說
mvn [<goal(s)>]
,goal是指plugin的執行特定的任務,例如我們常用的mvn archetype:generate
mvn clean package
先幫我執行clean生命週期的clean在執行default生命週期的package,或是像以下這樣的命令mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.5 -DinteractiveMode=false
詳細可以看Maven CLI Options Reference,這邊僅列最常用的
Options | Description |
---|---|
-h,--help | Display help information |
-P,--activate-profiles | Comma-delimited list of profiles to activate |
-X,--debug | Produce execution debug output |
-v,--version | Display version information |
-o,--offline | Work offline |
-D,--define | Define a system property |
當忘記命令的時-h
會是你的好幫手;執行mvn出現exception-X
可以幫你打印詳細log;-D
可以幫你傳入系統屬性;當你執行mvn命令不想使用到remote repository時可以下-o
命令
眼尖的人可以在maven\bin\mvn.cmd找到這個命令檔,還記得maven是java寫的這一回事吧,裡面其實就是在執行Java命令,看了就明白為什麼我們在環境建置的時候需要設置JAVA_HOME,以及他在執行時會把MAVEN_OPTS、MAVEN_ARGS帶入
Maven is - at its heart - a plugin execution framework; all work is done by plugins.
官網寫得很好,Maven就是plugin執行框架。
你的第一個使用plugin就是archetype,他是用來建構你專案的資料夾結構,命令結構為mvn pluginName:goal
,例如我們先前使用的
mvn archetype:generate
當然最重要的事是plugin底下有哪些goal可供我們使用,除了官網以外,當然就屬help最快
mvn archetype:help
針對plugin有完整的說明,並且告訴你有7個goals可以使用
往下會看到對於help可以下-D參數針對goal再做詳細說明
執行命令
mvn archetype:help -Ddetail=true -Dgoal=generate
今日講解如何使用外部的環境變數或設定檔來改Maven的執行,同時也講解了Maven的命令結構與使用,最重要的事help要會使用。至於還有那些Plugins可以使用就參考下面Available Plugins的連結囉,我們明天見