2016-07-28 47 views
0

我怎樣才能改變傳遞到Windows系統上執行的mvn可執行文件的默認參數,而無需修改每次安裝或手動創建的替代啓動腳本(或其他「硬編碼」在非移植的方式我的喜好)?要清楚,我不打開外部方法,如控制檯別名或使用快捷方式或文件系統鏈接。我要求提供一種Maven特定的可移植方式來描述Windows機器上所有Maven執行的默認啓動參數。如何在Windows系統範圍指定Maven命令行參數?

回答

0

MAVEN_OPTS類似,您可以將命令行參數傳遞給用於運行Maven的JVM,MAVEN_CMD_LINE_ARGS是一個環境變量,允許您直接將命令行參數傳遞給Maven本身(但僅在Windows上)。與修改單個Maven安裝或項目級別的文件和設置(例如通過settings.xml或maven.config)不同,MAVEN_CMD_LINE_ARGS允許您將命令行參數傳遞給使用提供的啓動腳本啓動的任何Maven安裝(在Windows上腳本是「mvn.cmd」和「mvnDebug.cmd」)。

舉個例子,我的Windows開發的計算機上我已經設置MVN_CMD_LINE_ARGS

--show-version --global-settings %M2_CONF%\settings.xml --global-toolchains %M2_CONF%\toolchains.xml --define settings.security=%M2_CONF%\security-settings.xml --fail-fast --update-snapshots --strict-checksums --define maven.artifact.threads=8

而不必把別名或創建自己的啓動腳本我簡直可以用這個方法內建實現我的標準化跨安裝配置的目標。與MVN_CMD_LINE_ARGS設置爲該值,在命令行上執行

mvn

實際上是像執行

mvn --show-version --global-settings %M2_CONF%\settings.xml --global-toolchains %M2_CONF%\toolchains.xml --define settings.security=%M2_CONF%\security-settings.xml --fail-fast --update-snapshots --strict-checksums --define maven.artifact.threads=8

現在,請注意我說過我相信這隻適用於Windows。雖然Linux Bash腳本包含一個名爲MVN_CMD_LINE_ARGS的變量導出,但它們不會將其作爲參數傳遞給mvn可執行文件。這樣做的結果是,在Windows和Linux可以在執行後使用MVN_CMD_LINE_ARGS從確定使用什麼樣的參數調用mvn,但只能在Windows中可以使用MVN_CMD_LINE_ARGS指示該參數將被用來調用mvn。從我所知道的情況來看,這種行爲可能並不是有意的,所以我不會推薦以批判的方式來使用它。看起來有一種項目特定的方式來配置mvn執行論證,通過將它們放置在項目目錄結構中的"./.mvn/maven.config"文件中。