2011-10-17 60 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