蚂蚁和大于

时间:2012-11-13 19:41:59

标签: javascript ant ant-contrib

我试图关注此stackoverflow链接:

最初,我开始寻找一种在蚂蚁中做大事的方法,但我找到了一些方法,这些都给我带来了麻烦。

  1. 我找到了一种方法,通过使用javascript任务来完成: How can I compare two properties with numeric values?
  2. 但是我收到以下错误消息: 无法加载脚本引擎管理器(org.apache.bsf.BSFManager或javax.script.ScriptEngineManager)

    我试图添加一个bsf jar并且没有成功。 你能举个例子吗??

    1. 我试图使用<bool>元素的ant-contrib附加属性,这些属性在以下链接中建议: http://ant-contrib.sourceforge.net/tasks/tasks/more_conditions.html
    2. 我没有成功。你能给我举个例子吗??

3 个答案:

答案 0 :(得分:2)

以下ANT演示适用于我而无需安装其他库:

<project name="hello" default="demo">
    <target name="demo">
        <script language="javascript">
            var version = parseInt(project.getProperty('version'));
            project.setProperty('isGreater', version > 1);
        </script>

        <echo message="${isGreater}"/>
    </target>
</project>

您使用的是什么版本的ANT和Java? 就我而言:

$ ant -version
Apache Ant(TM) version 1.8.2 compiled on December 3 2011

$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.5) (6b24-1.11.5-0ubuntu1~12.04.1)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)

答案 1 :(得分:1)

查看您收到的第一条错误消息:

Unable to load a script engine manager (org.apache.bsf.BSFManager or javax.script.ScriptEngineManager)

这告诉您缺少Jar文件。查看<script>任务:

  

注意:此任务取决于Apache Ant分发中未包含的外部库。有关详细信息,请参阅Library Dependencies

Library Dependency链接将带您进入表格。搜索单词 script task 。脚本任务最多需要10个可选的jar。您需要的是bsf.jar

要使用 Ant Contrib 任务,您需要Ant Contrib Jarfile,并使用<taskdef>任务链接到任务。这是如何做到的:

  • 下载最新版本的ant-contrib.jar
  • 在项目中创建一个名为antlib/ant-contrib的目录,并将ant-contrib.jar放在该目录中。

在您的build.xml中,您希望在顶部附近执行以下操作。这可以在任何任务之外完成:

<taskdef resource="net/sf/antcontrib/antlib.xml">
   <classpath>
       <fileset dir="${basedir}/antlib/ant-contrib"/>
   </classpath>
</taskdef>

现在,您应该可以使用包含ant-contrib task条件的<bool>

答案 2 :(得分:0)

使用此:

<scriptdef name="val1_mayorque_val2" language="javascript">
    <attribute name="val1" />
    <attribute name="val2" />
    <attribute name="resultado" />
    <![CDATA[
        if(attributes.get("val1") > attributes.get("val2"))
            project.setProperty(attributes.get("resultado"), "si");
        else
            project.setProperty(attributes.get("resultado"), "no");
    ]]>
</scriptdef>

用这个称呼:

<val1_mayorigualque_val2 val1="5" val2="3" resultado="result"/>

val1 =值1 val2 =值2

使用后,您必须测试$ {result}。我有它&#34; si&#34;值,则val1大于val2。