如何引用和转义传递给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文件。
答案 0 :(得分:1)
您可以尝试使用单引号('
),但我怀疑它是否会起作用。
问题是你可以在POM中有几个argument
元素(因此插件源代码中的数组),但是命令行中只有一个属性。
选项:
修补插件和/或打开功能请求以支持多个参数(可能是exec.args.0, exec.args.1, exec.args.2, ...
)
创建一个依赖于此项目/模块的模块以及您可以在哪里更改POM
使用Ant或BASH脚本。我经常使用这种方法来收集Maven不易支持的有用命令。在这种情况下,mvn dependency:build-classpath -Dmdep.outputFile=...
将为您提供类路径。