ApacheAnt命令行参数没有双引号-可能吗?

ApacheAnt命令行参数没有双引号-可能吗?,apache,command-line,ant,arguments,double-quotes,Apache,Command Line,Ant,Arguments,Double Quotes,今天我不得不向ApacheAnt文件添加一个任务。命令行应该是这样的 myprogram --param1 --param2 path\somefile 2> path\logfile 问题是,如果我用下面这样的方法 <exec executable="$(myprogram)" <arg value="--param1"> <arg value="--param2"> <arg path="$(somefile)"> <a

今天我不得不向ApacheAnt文件添加一个任务。命令行应该是这样的

myprogram --param1 --param2 path\somefile 2> path\logfile
问题是,如果我用下面这样的方法

<exec executable="$(myprogram)"
  <arg value="--param1">
  <arg value="--param2">
  <arg path="$(somefile)">
  <arg value="2>">
  <arg path="$(logfile)">
</exec>
如果您的文件/路径中有空格,但会破坏到日志文件的管道(相反,程序认为还有两个额外的文件参数“2>”和“path\logfile”),那么这并不坏,尤其好


我通过调用一个只希望文件作为参数的批处理脚本来解决这个问题,但我想知道:如果没有这样的解决方法,是否可以这样做?

您是否尝试过

当您运行“myprogram--param1--param2 path\somefile 2>path\logfile”时,您是否尝试过

,程序的参数以“2>结尾。文件重定向是shell的一个操作,它不是从ant内部使用的。如果查看文档中的,您将看到它支持通过输出属性重定向。

当您运行“myprogram--param1--param2 path\somefile 2>path\logfile”时,程序的参数以“2>结尾”。文件重定向是shell的一个操作,它不是从ant内部使用的。如果查看的文档,您会发现它支持通过输出属性重定向。

ant exec任务有一个输出参数,您可以在其中指定日志文件,而不需要命令行管道,与参数append结合使用,以确定是否应覆盖或追加输出文件。

ant exec任务有一个输出参数,您可以在其中指定日志文件,而无需命令行管道,与参数append结合使用,以确定是否应覆盖或追加输出文件。

我遇到了与主题starter相同的问题。在java执行命令行上,我需要将源文件添加为单独的参数,而不是一个带引号的参数。
我使用了
标记,但按照nullptr的建议使用
解决了我的问题。

我的问题与主题启动者的问题相同。在java执行命令行上,我需要将源文件添加为单独的参数,而不是一个带引号的参数。
我使用了
标记,但按照nullptr的建议使用
解决了我的问题。

谢谢,这很有效!我注意到了“line”的变体,但是ApacheAnt手册没有很好地解释它和“value”之间的区别,所以我认为它只是一种别名。从Ant文档中可以看出:强烈建议尽可能避免使用line版本。Ant将尝试以类似于(Unix)shell的方式拆分命令行,但在某些情况下可能会创建与您所期望的非常不同的内容。谢谢,这个有用!我注意到了“line”的变体,但是ApacheAnt手册没有很好地解释它和“value”之间的区别,所以我认为它只是一种别名。从Ant文档中可以看出:强烈建议尽可能避免使用line版本。Ant将尝试以类似于(Unix)shell的方式拆分命令行,但在某些情况下可能会创建与您所期望的非常不同的内容。谢谢,这似乎是一般的方法(如果你想区分stdout和stderr,我看到也有一个error属性)。谢谢,这似乎是一般的方法(如果你想区分stdout和stderr,我看到也有一个error属性)。
myprogram "--param1" "--param2" "path\somefile" "2>" "path\logfile"