iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0
Software Development

我們與Maven的距離系列 第 11

Day10 - Maven CLI and Plugin

  • 分享至 

  • xImage
  •  

前言

mvn是執行maven的指令,在day01的環境安裝你已經下第一個指令mvn -v,在dayXX你執行mvn archetypes:generate是你第一個使用的套件,去了解commandline的指令有助於我們在使用IDE與maven整合時的操作,才不會IDE執行maven時報錯不知道該如何處理

Config Maven Execution

我們可以透過幾種方來設置我們要執行的Maven最詳細參考官網https://maven.apache.org/configure.html

  1. MAVEN_OPTS environment variable:設定此環境變數是修改Java執行Maven時所使用的JVM參數,例如-Xms256m -Xmx512m
  2. MAVEN_ARGS environment variable:此參數用途在於執行Maven CLI參數前有些plugin執行前所需的參數
  3. settings.xml:maven的global setting或是user specific setting
  4. .mvn directory:可以在專案目錄設置針對此專案使用的mvn設定檔其中包含maven.configjvm.configextensions.xml

Command

Run

執行maven可以有以下幾種方式
mvn [options] [<goal(s)>] [<phase(s)>]

  1. mvn [options],你可以直接執行options像是我們先前使用的mvn -v
  2. mvn [<phase(s)>],你可以直接使用maven生命週期的phase,例如我們先前使用的mvn package,maven生命週期詳細說明留在明日再說
    • clean:clean
    • default:validate、compile、package、verify、install、deploy
    • site:site、site-depoly
  3. mvn [<goal(s)>],goal是指plugin的執行特定的任務,例如我們常用的mvn archetype:generate
  4. 當然你也可以使出組合技,例如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

Options

詳細可以看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帶入

Plugin

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可以使用
https://ithelp.ithome.com.tw/upload/images/20250925/20128084M2q8jvy2fp.png
往下會看到對於help可以下-D參數針對goal再做詳細說明
https://ithelp.ithome.com.tw/upload/images/20250925/20128084rgh1mZzivV.png
執行命令

mvn archetype:help -Ddetail=true -Dgoal=generate

https://ithelp.ithome.com.tw/upload/images/20250925/20128084MQTvA4VZJf.png

小結

今日講解如何使用外部的環境變數或設定檔來改Maven的執行,同時也講解了Maven的命令結構與使用,最重要的事help要會使用。至於還有那些Plugins可以使用就參考下面Available Plugins的連結囉,我們明天見

Reference


上一篇
Day09 - Repository and setting.xml
系列文
我們與Maven的距離11
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言