如何在Windows上指定系统范围内的Maven命令行参数?

时间:2016-07-28 23:43:54

标签: windows bash maven environment-variables parameter-passing

如何更改传递给在Windows系统上执行的mvn可执行文件的默认参数,而无需修改每个安装或手动创建备用启动脚本(或者以非便携方式“硬编码”我的首选项)?为了清楚起见,我不接受外部方法,如控制台别名或使用快捷方式或文件系统链接。我要求一种特定于Maven的可移植方式来描述我的Windows机器上所有Maven执行的默认启动参数。

1 个答案:

答案 0 :(得分:1)

就像MAVEN_OPTS允许您将命令行参数传递给用于运行Maven的JVM一样,MAVEN_CMD_LINE_ARGS是一个环境变量,允许您将命令行参数直接传递给Maven本身(但仅限于视窗)。与修改单个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"文件中。