1

What I want to do is:

    <exec executable="thrift" dir="${thriftsrc}">
        <arg value="--gen java"/>
        <arg value="-out ${src}"/>
        <arg value="mqlServer.idl"/>
    </exec>

I have copied thrift.exe in C:\Windows\System32\ so the file is definitely in the PATH. I have tried several executable Arguments, full path, with and without .exe but it is not working in any variant.

But this is working very well:

   <exec executable="perl" dir="${generators}">
        <arg value="compactTalib.pl"/>
        <arg value="${talibsrc}"/>
    </exec>

Any Ideas how I can get my thirft compiler invoked in my ant build?

4

2 回答 2

0

首先,进入 DOS 提示符并输入“thrift”。它“工作”吗?我希望它会给你一个错误,但至少找到 exe。如果找不到 exe,请在返回 Ant 之前解决该问题。

其次,在 Ant 中回显 ${thriftsrc}。那是 C:\Windows\System32 吗?如果不是,请省略 dir 参数。它是可选的,因此您无论如何都可以删除它并使用路径。

最后,我看到了另一个你还没有遇到的问题。这将作为单个参数“--gen java”传入。

<arg value="--gen java"/>

文档的相关部分是:

是包含空格字符的单个命令行参数,而不是单独的命令“-l”和“-a”。

于 2013-05-11T22:44:15.533 回答
0

这可能是该thrift命令的调用方式:

<exec executable="thrift" dir="${thriftsrc}">
    <arg value="--gen"/>
    <arg value="java"/>
    <arg value="-out"/>
    <arg value="${src}"/>
    <arg value="mqlServer.idl"/>
</exec>

另外,考虑添加failonerror到您的<exec>任务中:

<exec executable="thrift" dir="${thriftsrc}" failonerror="yes">

这将导致 Ant 脚本以错误消息结束,这将有助于排除故障。

于 2013-05-13T14:54:04.433 回答