在Maven Exec插件中引用和转义

时间:2012-03-09 07:13:04

标签: maven

如何引用和转义传递给Maven插件的参数?

例如,我想将多个文件名作为参数传递给Maven Exec插件运行的应用程序:

mvnDebug exec:java -Dexec.mainClass="Main" -Dexec.args="/path/to/file1 /path/to/file2"

但是如果路径有空格怎么办?

我尝试过使用\“:
-Dexec.args="\"/path/to/a file\" /path/to/file2"

和“”:
-Dexec.args="""/path/to/a file"" /path/to/file2"

既不起作用:-(。也没有在-D之前移动第一个引号。

Maven Exec插件的源代码也没有帮助我,它从某个地方收到String []但是在哪里?

请注意,我必须从命令行开始工作,而不更改POM文件。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用单引号('),但我怀疑它是否会起作用。

问题是你可以在POM中有几个argument元素(因此插件源代码中的数组),但是命令行中只有一个属性。

选项:

  • 修补插件和/或打开功能请求以支持多个参数(可能是exec.args.0, exec.args.1, exec.args.2, ...

  • 创建一个依赖于此项目/模块的模块以及您可以在哪里更改POM

  • 使用Ant或BASH脚本。我经常使用这种方法来收集Maven不易支持的有用命令。在这种情况下,mvn dependency:build-classpath -Dmdep.outputFile=...将为您提供类路径。