2013-02-01 16 views
1

我有这个蚂蚁build.xml文件有3个目标在它:蚂蚁问其目标用户呼叫如果未指定

target1target2target3

如果用户只是运行ant而不是明确的ant target1或类似的东西,我想提示用户询问他想调用哪个目标。

记住,用户应该只被提示输入此只有他不显式调用目标,而运行ant

回答

0

您可以使用由蚂蚁提供的input任务,使你默认目标。

<input 
message="Please enter Target ID (1,2 or 3):" 
validargs="1,2,3" 
addproperty="targetID" 
/> 

使用此属性的值决定要执行的目标。

从蚂蚁文档:

消息:它获取构建运行期间显示给用户的消息。

validargs:包含有效输入参数的逗号分隔字符串。如果设置,输入任务将拒绝未在此处定义的任何输入。 您可以根据您的需要传递任何参数。

方法addProperty:一个属性的名称从input.Behaviour创建等于属性任务,这意味着现有 属性不能被重写。

+0

谢谢!那是它:) – user1856732

4

Ant不是一种编程语言,它是一种依赖矩阵语言。两者之间有很大的区别。

在程序语言中,您可以指定序列的绝对顺序。另外,你在做事情方面有更多的灵活性。在Ant中,您不指定执行顺序。您可以指定各种简短的如何构建这个步骤,然后指定它们的依赖关系。 Ant会自动计算出所需的执行顺序。

这是开发人员了解Ant最困难的事情之一。当开发人员尝试强制执行命令并最终执行几十次同一组目标时,我已经看到过很多次。我最近建造了她,花费了将近10分钟的时间来制作,并且我重写了build.xml以在2分钟内制作出相同的版本。

您可以使用<input/>获取用户输入,然后使用<exec><java>执行另一个Ant进程来执行请求的目标。然而,这打破了Ant应该工作的方式。

默认目标应该是开发人员在编程时定期执行的默认目标。它不应该清洁的构建。它不应该运行10分钟的测试。它应该编译任何更改的文件,并重建战争或jar。大约99%的时间就是我想要的。整个过程需要10秒钟。

我真的很生气,当有人不明白这一点。我讨厌它,当我输入ant时,我得到如何执行我的构建方向。当默认目标清除了我以前的编译时,我真的很恼火。而且,如果我得到某些东西的提示,我就会充满致命的欲望,抨击编写该死的构建文件的人与一个大钝器。那是因为我会运行Ant,在构建发生时做其他事情,然后在我认为构建完成时回到那个命令窗口。没有什么让我更加生气,回到构建只发现它坐在那里等着我告诉它哪个目标。

如果你确实需要这样做。使用名为build.sh的shell脚本。不要与build.xml这样做,因为这会影响发展。

你真正需要做的是教大家如何使用Ant:

  • 蚂蚁会列出用户可执行的目标,当你键入ant -p。这将列出所有目标及其描述。如果目标没有描述,则不会列出它。这对用户不应单独执行的内部目标非常有用。 (例如,仅执行某种测试来检查是否应执行另一个目标的目标)。要做到这一点,请确保您的目标有说明。当编写Ant文件的人为我不想要的一些次要目标描述时,我会生气,但忘记了我想要的目标描述(如编译)。不要让大卫生气。你不想让大卫angry
  • 使用您组的默认目标名称。这样,我知道整个项目的目标是什么,而不是使用BUILDbuild-programs对比Compilebuild-my-stuff对比StuffBuild。我们对Maven lifecycle names名称进行了标准化。他们被记录在案,没有任何争论或争论。
  • 请勿使用<ant/><antcall>来执行构建顺序。不要将你的build.xml划分为12个独立的build.xml程序。所有这些可能会破坏Ant构建目标依赖矩阵的能力。此外,许多Ant工具在构建中显示依赖关系层次结构,并且无法在多个构建文件中工作。
  • 不要将您的构建包装在shell脚本中。如果你这样做,你可能不了解构建如何工作。
  • 构建不应该更新我的工作目录中由我签出的任何文件。它不应该在我的工作目录中散布各种各样的构建工件。它不应该在工作目录之外做任何事情(除非可能做某种部署,但只在运行部署目标时)。实际上,所有构建过程都应该在INSIDE工作目录的子目录中进行。 A clean应该只删除这一个目录。有时,这称为build,有时dist。我通常将其称为target,因为我采用了Maven命名约定。
  • 您的构建脚本应该是构建脚本。它不应该做结账或更新 - 至少不会自动。我知道如果你使用CruiseControl作为一个连续的构建过程,你必须在build.xml中有更新和签出功能。这是我现在使用詹金斯的原因之一。

对不起,这个答案不一定是你正在寻找的。你并没有真正说明你在用Ant做什么。如果你在做构建,不要做你想做的事情。如果您正在编写某种程序,请使用真正的编程语言而不是Ant。

Ant构建应该通常在一两分钟内完成,并且重做构建,因为更改文件不应超过30秒。这很重要,因为我想鼓励我的开发人员使用Ant进行构建,并使用Jenkins服务器使用的相同目标。这样,他们可以用我的Jenkins服务器执行官方构建的相同方式来测试它们的构建。

+0

大卫,这很容易,我已阅读蚂蚁最好的文章!我最近刚刚在几周前开始学习(某种)蚂蚁,并且我诚实地说我需要这样的东西。感谢那。 这是很难描述我的东西,但让我们说它不是非常不像安装/卸载thingie!我想也许问问用户他想做什么,如果没有指定,是有道理的!我会仔细考虑一下,但是谢谢你! – user1856732