如何在 Maven 2 exec 插件的参数中使用空格

Posted

技术标签:

【中文标题】如何在 Maven 2 exec 插件的参数中使用空格【英文标题】:How to use space in arguments for Maven 2 exec plugin 【发布时间】:2011-06-10 15:21:27 【问题描述】:

相关问题:Maven Exec Plugin not reading configuration

在我的配置中,我需要一个文件路径参数。通过在 POM 中用引号将参数括起来,我发现了一个相当“脏”的解决方法(“脏”是因为参数将通过这些引号传递给 main 方法,它们必须在代码中再次删除)。

<configuration>
    <executable>java</executable>
    <arguments>
        <argument>"path to file"</argument>
    </arguments>
</configuration>

但是我没有找到将路径作为命令行参数传递的解决方案:

>mvn exec:java -Dexec.args="path to file"

【问题讨论】:

【参考方案1】:

一般来说,如果参数值中有空格,maven 要求整个参数都被引用。

mvn exec:java "-Dexec.args=path to file"

【讨论】:

【参考方案2】:

在命令行中,您可以尝试使用单引号(但我不确定它是否有效),例如:

>mvn exec:java -Dexec.args="'path to file' arg2 arg3"

【讨论】:

我在 Windows 上尝试过但没有成功。 (在 Linux 上,文件/路径名中不允许有空格 :-) 在 mac os 上也失败了。不知道答案为什么要回答? 在 Linux 上为我工作! ;-) 适用于 Mac OS X El Captain 10.11.6、Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T15:39:06-04:00)【参考方案3】:

使用-Dexec.args="'space parameter' normalparameter 'one more space parameter'"

我已经在 Windows 上试过了,它可以工作。

【讨论】:

【参考方案4】:

如果你想在命令行中尝试:$ mvn exec:java -Dexec.args="path\ to\ file arg2 arg3"

【讨论】:

【参考方案5】:

试试-Dexec.arguments="path to file"(而不是-Dexec.args="path to file"

Check here for details.

【讨论】:

以上是关于如何在 Maven 2 exec 插件的参数中使用空格的主要内容,如果未能解决你的问题,请参考以下文章

Maven:如何防止 exec 插件显示其堆栈跟踪?

使用 Exec Maven 插件分叉 Java,而不使用 `exec` 目标

如何使用 maven-exec-plugin 进行 npm clean?

使用 Maven Exec 插件的多个命令

使用带有参数的 Maven 'exec:exec'

Maven Exec Plugin:如何配置工作目录