2016-07-28 74 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"文件中。