2011-03-25 233 views
2

我使用Ant来构建我的Android应用程序。我希望能够做到这一点:有没有办法将参数传递给ant任务命令?

ant debug android-market; //build the debug version for android-market; 
ant debug motorola-market; //Builds debug version for motorola-market; 
ant release android-market; //etc. 

有没有一种方法来检测来自我定制的Ant调试/发布任务内的“安卓市场”参数?

我不想使用Dparam=value,因为那样看起来不那么干净。

回答

4

该语法用于一次调用多个目标。所以,你也许可以使用

ant android-market debug 

,使Android的市场目标定在调试目标用来识别建立的版本属性:

<project basedir="." default="debug"> 
    <target name="android-market"> 
    <property name="market" value="android"/> 
    </target> 

    <target name="debug"> 
    <echo message="debugging for the following market : ${market}"/> 
    </target> 
</project> 

> ant android-market debug 
> android-market: 
> debug: 
> [echo] debugging for the following market : android 
+0

哇,这是否工作? – 2011-03-25 19:29:47

+0

是的,它的工作原理。我刚刚在编辑的答案中用构建文件对其进行了测试 – 2011-03-25 19:39:18

+0

这看起来非常酷! :)我要重新考虑我的项目设置并完成这项工作。这样你就可以很容易地混搭。 – Peterdk 2011-03-25 21:46:14

1

我宁愿不使用 - Dparam =值,因为这不太干净。

我认为你应该克服你的偏好。但添加一个描述其他目标接受的参数的'帮助'目标。

0

JB的答案完全有效,但我想找到一种方法来设置默认值。我找到了答案,在这里由一个叫麦克林女士:http://www.velocityreviews.com/forums/t137033-is-it-possible-to-alter-ant-properties-after-theyve-been-initialized.html

所以,我最后不得不这样的事情:

<project basedir="." default="debug"> 
    <target name="set-defaults"> 
     <property name="market" value="android"/> 
    </target> 

    <target name="motorola-market"> 
     <property name="market" value="motorola/> 
    </target> 

    <target name="debug" depends="set-defaults"> 
     <echo message="debugging for the following market : ${market}"/> 
    </target> 
</project> 

所以,你可以为Android或ant motorola-market debug为摩托罗拉做ant debug

相关问题