2011-10-17 59 views
0

我有以下Ant命令。我需要將一個變量{merged.folder}傳遞給arg行。該值來自屬性文件。但它並不能解決這個問題。有沒有辦法做到這一點。你能幫我麼?將變量傳遞給Ant腳本中的參數

<java fork="true" dir="${shrinksafe.util.path}/buildscripts" classname="org.mozilla.javascript.tools.shell.Main"> 
    <arg line="releaseDir=${merged.folder}" /> 
    <classpath> 
     <pathelement location="${shrinksafe.util.path}/shrinksafe/js.jar" /> 
     <pathelement location="${shrinksafe.util.path}/shrinksafe/shrinksafe.jar" /> 
     <pathelement path="${java.class.path}" /> 
    </classpath> 
</java> 
+0

也許一個簡單的美元符號將解決它? $ {} merged.folder? – yonix

+0

哦......這是我的代碼中的一個錯字。我曾嘗試使用$。但是這並不起作用 – Apps

+1

@Apps沒有解決變量的問題。如果是這種情況,螞蟻腳本將無法工作。更有可能你的變量沒有在某個地方定義。嘗試在使用它之前回顯它並查看結果。 – FailedDev

回答

1

我檢查根據您的文章這個ant腳本:

<?xml version="1.0" encoding="UTF-8"?> 
<project default="test_arg_path" basedir="."> 
    <property file="props.properties"/> 

    <target name="test_arg_path"> 
     <java dir=".\build\classes" classname="Test"> 
      <!-- <arg value="${argValue}"/>--> <!-- First variant --> 
      <arg line="releaseDir=${argValue} arg2Value" /> <!-- Second variant --> 
     </java> 
    </target> 
</project> 

屬性文件props.properties

argValue=argVal 

測試類源:

public class Test { 
    public static void main(String[] args) { 
     if (args.length == 0) { 
      System.out.println("args is empty"); 
     } 
     System.out.println(Test.class + ", arg0: " + args[0]); 

     if (args.length > 1) { 
      System.out.println(Test.class + ", arg1: " + args[1]); 
     } 
    } 
} 

的輸出爲第一變型(使用ARG值):

類測試,爲arg0:argVal

對於第二變體的輸出(使用ARG線):

class Test,arg0:releaseDir = argVal
class Test,arg1:arg2Value

正如您所看到的,腳本中的所有內容都是正確的,並且是正確的。我認爲,在你的變量的值設置問題merged.folder