2011-10-17 10 views
0

次のAntコマンドがあります。私は変数{merged.folder}をarg行に渡す必要があります。この値はプロパティファイルから取得されます。しかし、それはその変数を解決していません。これを行う方法はありますか?手伝ってくれませんか?Antスクリプトでargに変数を渡す

<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変数を解決していないことはありません。これが当てはまる場合、antスクリプトはこれまでどおりに動作しません。変数がどこかで定義されていない可能性が高くなります。それを使用する直前にエコーして結果を確認してください。 – FailedDev

答えて

1

私はあなたのポストに基づいて、このAntスクリプトチェックしました:

argValue=argVal 

テストクラスのソース:プロパティprops.propertiesファイル

<?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> 

を:

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の値を使用して)するための出力:

クラスTest、arg0に:(引数ラインを使用して)argVal

第二の変形のために出力:

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

ご覧のとおり、スクリプトはすべて正常で、正しいです。あなたの変数の値を設定する際に問題があると思います。merged.folder

関連する問題