2012-11-13 103 views
0

我試圖遵循這個計算器鏈接:螞蟻和大於

開始,我就開始尋找一種方式在螞蟻做GREATERTHAN,我發現一些方法,所有的問題造成的對我。

  1. 我找到了一種方法,通過使用JavaScript任務做到這一點: How can I compare two properties with numeric values?

,但我得到了以下錯誤消息: 無法加載腳本引擎管理器(org.apache.bsf。 BSFManager或javax.script.ScriptEngineManager)

我嘗試添加BSF罐子,是不成功的這樣做。 可以請你舉個例子..?

  • 我試圖使用螞蟻的contrib附加屬性爲<bool>元件,其被建議在下面的鏈接: http://ant-contrib.sourceforge.net/tasks/tasks/more_conditions.html
  • 和我是不成功的這樣做。你能給我舉個例子嗎??

    回答

    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

    看一下你得到的第一個錯誤信息:

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

    這是告訴你,你缺少的JAR文件。查看<script>任務:

    注意:此任務取決於未包含在Apache Ant分發中的外部庫。有關更多信息,請參見Library Dependencies

    庫相關鏈接將帶你到一個表。搜索腳本任務。腳本任務需要多達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>條件。

    +0

    非常感謝。我確實得到這個錯誤。我正在嘗試按照您的建議添加jar,但是如何導入/包含要在build.xml中使用的jar? 我試圖跟着我導入/包括螞蟻conrtib的方式,並嘗試: <的taskdef資源= 「組織/阿帕奇/ BSF/Languages.properties」> 但我仍然得到了同樣的錯誤... 可以請你告訴我該怎麼辦? – Yoni

    +0

    問題在於'''任務已經在Ant中定義了,所以'taskdef'不起作用。相反,將bsf.jar放入您的ANT_HOME/lib目錄中。這是在Classpath中構建的Ant中。否則,您需要在Ant中傳遞'-lib'參數,或者在HOME/HOMEPATH/USERPROFILE目錄中創建一個名爲'antrc_pre.bat'的文件。 –

    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 值2 =值2

    使用之後,你一定要試$ {結果}。 Id它具有「si」值,那麼val1大於val2。