【问题标题】:invoking an ant command via make通过 make 调用 ant 命令
【发布时间】:2013-08-05 18:10:58
【问题描述】:

我正在尝试做一些可能不会经常做的事情。它是我们测试代码的一部分,它使用多种工具:java、ant、make 和 xml。

我们的 java 测试工具解析 XML。它通过文件中的 XML 标记获取参数:

<TAG>-Darg1="argument1" -Darg2="argument2"</TAG>

在 java 代码中,我调用了 make 命令。从 java 调用 make 命令(通过 ProcessBuilder)。

在 makefile 中,我在应该传递 -Darg="argument1" -Darg2="argument2" 参数的地方调用 ant。

但它不起作用。

无论如何,-Darg1= ... 部分中的-D 似乎与 make 不兼容,因此我试图将其包含在一个可以通过 make 传递给 ant 的变量中。在 ant 中,它采用变量“RULES_ARG”并将其视为一个参数,而不是两个。

我尝试了 xml 中的各种引用机制:“-Darg1=argument1 -Darg2=argument2”、“-Darg1="argument1" -Darg2="argument2""

以及在 java 中调用它的位置:"RULES_ARGS="+RulesArgs+" ", "RULES_ARGS=\""+RulesArgs+"\" "(结合 xml 部分)。

等等。都没有理想的结果。

我想知道是否有人尝试做类似的事情,以及解决问题的工作方法?

提前致谢。

【问题讨论】:

  • 没有办法用给出的信息来回答这个问题。请提供您用于调用 ant 的 make 规则、如何调用 make 的示例、您希望看到的输出以及您实际获得的输出。请务必删除配方行上的任何 @ 前缀,以便您可以准确查看正在运行的命令。

标签: java xml ant makefile


【解决方案1】:

您是说您正在尝试使用 -D 选项运行 make 吗?这行不通,因为 make 不支持 -D

如果你试图通过 make 命令行传递一些标志以用于 ant 调用,那么你应该这样做:当你运行 make 时,在 make 命令行上设置一个变量:

make ANTFLAGS='-DFOO -DBAR -DBAZ'

然后在你的makefile中,当你运行ant时,传递那个变量:

runant:
         ant $(ANTFLAGS) ...

如果这不是您想要做的,请澄清您的问题。例如,您说它不起作用没有理想的结果,但您没有提供任何有关您看到的错误或不正确行为的详细信息。这样的错误消息将大大有助于澄清到底发生了什么。

【讨论】:

  • 我尽量避免在原始帖子中添加太多细节,特别是因为我尝试了不同的选项,但似乎也不起作用。
  • 糟糕,按回车键太快了。无论如何,似乎 ant 需要将参数作为属性传递。像上面那样传递属性实际上看起来像: ant -Darg1="argument1" -Darg2="argument2" 如果在命令行上。但是,它不在命令行上,它是通过 make 传递的,而 make 是通过 java 传递的......无论如何,我找到了一个部分解决方案,方法是只传递一个参数,一个属性文件,然后传递我想要的许多参数通过属性文件。不是我一直在寻找的解决方案,而是目前有效的解决方案。
  • 通过省略一些信息(如上所述),我希望这会给克服这个问题的人敲响警钟。我仍然希望...
  • 不幸的是,单引号不起作用,但可能不是因为它“不起作用”。我们的命令行解析器有点脑残,但我们通过它传递命令行参数,以便我们可以将它传递给 sigar。我们使用命令行解析器来创建 PTQL 查询和调用 ProcessBuilder。如果参数用双引号而不是单引号括起来,我们会将它们放在一起。
猜你喜欢
  • 2010-09-06
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
  • 2010-11-06
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
相关资源
最近更新 更多