xml - Apache Ant 不会做数学运算

标签 xml ant build-automation

我正在使用分布式源代码处理 Java 项目,必须使用自定义 Ant 脚本构建源代码才能正常工作。问题是,当我运行脚本时,我得到了

BUILD FAILED
C:\[path]\autobuild.xml:47: Only 1 operation can be specified

第 47-59 行内容如下:

<math result="months" datatype="int">
    <op op="-">
        <op op="+">
            <num value="${month}"/>

            <op op="*">
                <num value="${year}"/>
                <num value="12"/>
            </op >
        </op>
        <num value="24097"/>
    </op>
</math>

我尝试用谷歌搜索错误短语,唯一的结果是 Ant source of MathTask.java它表明如果操作为空,这就是应该发生的情况。我尝试按照以下行更改代码:

<op type="-">

<op op="subtract">

但是这些产生了同样的错误。我改为:

<subtract>

现在没有错误,但结果始终为零。 我还尝试将数学节减少为只有一个操作:

<math result="months" datatype="int">
    <op op="subtract">
        <num value="27940"/>
        <num value="24123"/>
    </op>
</math>

但问题依然存在。

我完全不知所措。有谁知道这里发生了什么?我使用的是最新版本的 Ant... ${month} 和 ${year} 设置正确(我也用硬编码数字进行了测试,但它仍然不起作用)。

谢谢!

最佳答案

这段代码我遇到了同样的问题。有趣的是,大多数时候它确实有效。该错误大约每 5 次我运行构建脚本时发生一次。

<math datatype="int" result="rndNum">
    <op op="+">
        <num value="42000" />
        <op op="*">
           <num value="1000"/>
           <op op="random"/>
        </op>               
    </op>
</math>

我从数学任务中删除了 datatype 属性并将其放在第一个操作中。

<math result="rndNum">
    <op datatype="int" op="+">
        <num value="42000" />
        <op op="*">
           <num value="1000"/>
           <op op="random"/>
        </op>               
    </op>
</math>

到目前为止它有效。让我们看看多长时间 :) 如果它不起作用,我会删除我的答案。

关于xml - Apache Ant 不会做数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8059028/

相关文章:

.net - 使用 MSBuild 和 CSPack 任务打包 Azure 角色

windows - 即使在其他平台上使用该任务,Ant 的 tar 任务能否设置 Linux 文件权限?

command-line - 如何在 Java/Groovy 中进行系统命令调用?

c# - xsi :type attribute messing up C# XML deserialization

安卓|找不到以下类 : menu and item

android - 如何配置android map sdk v2使用不同的 key 进行生产和开发?

java - 如何正确设置 Ant 路径ID?

oracle - 在自动构建环境中进行 PL/SQL 预编译和代码质量检查?

java - 读取我的项目(src)内的xml文件

java - Servlet 不工作 :HTTP Status 404