【问题标题】:ant and greater than蚂蚁和大于
【发布时间】:2023-03-08 11:35:02
【问题描述】:

我试图关注这个 stackoverflow 链接:

最初,我开始寻找一种比 ant 做得更好的方法,但我发现很少有方法都给我带来了问题。

  1. 我找到了一种方法,通过使用 javascript 任务来实现: How can I compare two properties with numeric values?

但我收到以下错误消息: 无法加载脚本引擎管理器(org.apache.bsf.BSFManager 或 javax.script.ScriptEngineManager)

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

  1. 我试图为<bool> 元素使用 ant-contrib 附加属性,这些属性在以下链接中建议: http://ant-contrib.sourceforge.net/tasks/tasks/more_conditions.html

我没有成功。可以举个例子吗?

【问题讨论】:

    标签: javascript ant ant-contrib


    【解决方案1】:

    以下 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)
    

    【讨论】:

      【解决方案2】:

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

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

      这告诉您您缺少一个 Jar 文件。看&lt;script&gt;任务:

      注意:此任务依赖于未包含在 Apache Ant 发行版中的外部库。请参阅Library Dependencies 了解更多信息。

      Library Dependency 链接会将您带到一个表格。搜索词脚本任务。脚本任务最多需要 10 个可选 jar 才能工作。您需要的是bsf.jar。

      要使用 Ant Contrib 任务,您需要 Ant Contrib Jarfile,并使用 &lt;taskdef&gt; 任务链接到任务。操作方法如下:

      • 下载最新版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,包括&lt;bool&gt; 条件。

      【讨论】:

      • 非常感谢。我确实收到了这个错误。我试图按照您的建议添加 jar,但是如何导入/包含要在 build.xml 中使用的 jar?我试图按照我导入/包含 ant-conrtib 的方式,并尝试: 但我仍然遇到同样的错误......你能告诉我该怎么做吗?
      • 问题是 &lt;scripts&gt; 任务已经在 Ant 中定义了,所以 taskdef 将不起作用。相反,将 bsf.jar 放入您的 ANT_HOME/lib 目录。这是在 Ant 内置的 Classpath 中。否则,您需要在 Ant 中传递 -lib 参数,或者在您的 HOME/HOMEPATH/USERPROFILE 目录中创建一个名为 antrc_pre.bat 的文件。
      【解决方案3】:

      使用这个:

      <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}。如果它具有“si”值,则 val1 大于 val2。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-22
        • 2011-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-29
        相关资源
        最近更新 更多