2013-12-13 49 views
2

對於標題,我很抱歉,但我無法弄清楚如何用一個句子描述問題。Ant任務包含java調用,接收將被設置爲系統屬性參數的參數

我有下的build.xml代碼:

<project name="Project" default="configure-and-run" basedir="."> 
     <target name="run"> 
       <java classname="Main"> 
         <classpath location="."/> 
         <sysproperty key="key1" value="value1"/> 
       </java> 
     </target> 

     <target name="configure-and-run"> 
       <antcall target="run"> 
         <param name="key2" value="value2"/> 
       </antcall> 
     </target> 
</project> 

在這種情況下,一對key1->可以在Java代碼來獲得值1:

System.getProperty("key1"); 

我的問題是:如何能給,或者更確切地說,我如何獲得「運行」目標上的參數,並將這些參數提供給java ant任務?

在上面的例子中,主類是開始之後,我想我有可能獲得「值2」與:提前

System.getProperty("key2"); 

感謝。

同時,我發現了一個解決辦法:

我的父母Ant任務具有參數列表。 讓我複製和修改上面的代碼:

<project name="Project" default="configure-and-run" basedir="."> 
    <target name="run"> 
     <java classname="Main"> 
      <classpath location="."/> 
      <sysproperty key="${prop1key}" value="${prop1value}"/> 
      ... 
      <sysproperty key="${propNkey}" value="${propNvalue}"/> 
     </java> 
    </target> 
    <target name="configure-and-run"> 
     <antcall target="run"> 
      <param name="prop1key" value="myKey"/> 
      <param name="prop1value" value="myValue"/> 
     </antcall> 
    </target> 
</project> 

參數的數量是可變的,根據您的需要。

我希望這件事能幫助別人,就像它幫助我一樣。

祝您有愉快的一天。

回答

1

以下Ant腳本使用<java>的嵌套元素<syspropertyset>將其他屬性傳遞給Java程序。

<target name="run"> 
    <java classname="Main"> 
     <classpath location="."/> 
     <sysproperty key="key1" value="value1"/> 
     <syspropertyset refid="additional-java-sysproperties"/> 
    </java> 
</target> 

<target name="configure-and-run"> 
    <property name="key2" value="value2"/> 
    <propertyset id="additional-java-sysproperties"> 
     <propertyref name="key2"/> 
    </propertyset> 

    <antcall target="run"> 
     <reference refid="additional-java-sysproperties"/> 
    </antcall> 
</target> 
+0

不錯。比我的更好的答案。謝謝。 –