我有这个蚂蚁build.xml
文件有3个目标在它:蚂蚁问其目标用户呼叫如果未指定
target1
,target2
和target3
。
如果用户只是运行ant
而不是明确的ant target1
或类似的东西,我想提示用户询问他想调用哪个目标。
记住,用户应该只被提示输入此只有他不显式调用目标,而运行ant
我有这个蚂蚁build.xml
文件有3个目标在它:蚂蚁问其目标用户呼叫如果未指定
target1
,target2
和target3
。
如果用户只是运行ant
而不是明确的ant target1
或类似的东西,我想提示用户询问他想调用哪个目标。
记住,用户应该只被提示输入此只有他不显式调用目标,而运行ant
您可以使用由蚂蚁提供的input
任务,使你默认目标。
<input
message="Please enter Target ID (1,2 or 3):"
validargs="1,2,3"
addproperty="targetID"
/>
使用此属性的值决定要执行的目标。
从蚂蚁文档:
消息:它获取构建运行期间显示给用户的消息。
validargs:包含有效输入参数的逗号分隔字符串。如果设置,输入任务将拒绝未在此处定义的任何输入。 您可以根据您的需要传递任何参数。
方法addProperty:一个属性的名称从input.Behaviour创建等于属性任务,这意味着现有 属性不能被重写。
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。BUILD
与build-programs
对比Compile
与build-my-stuff
对比StuffBuild
。我们对Maven lifecycle names名称进行了标准化。他们被记录在案,没有任何争论或争论。<ant/>
或<antcall>
来执行构建顺序。不要将你的build.xml
划分为12个独立的build.xml
程序。所有这些可能会破坏Ant构建目标依赖矩阵的能力。此外,许多Ant工具在构建中显示依赖关系层次结构,并且无法在多个构建文件中工作。clean
应该只删除这一个目录。有时,这称为build
,有时dist
。我通常将其称为target
,因为我采用了Maven命名约定。对不起,这个答案不一定是你正在寻找的。你并没有真正说明你在用Ant做什么。如果你在做构建,不要做你想做的事情。如果您正在编写某种程序,请使用真正的编程语言而不是Ant。
Ant构建应该通常在一两分钟内完成,并且重做构建,因为更改文件不应超过30秒。这很重要,因为我想鼓励我的开发人员使用Ant进行构建,并使用Jenkins服务器使用的相同目标。这样,他们可以用我的Jenkins服务器执行官方构建的相同方式来测试它们的构建。
大卫,这很容易,我已阅读蚂蚁最好的文章!我最近刚刚在几周前开始学习(某种)蚂蚁,并且我诚实地说我需要这样的东西。感谢那。 这是很难描述我的东西,但让我们说它不是非常不像安装/卸载thingie!我想也许问问用户他想做什么,如果没有指定,是有道理的!我会仔细考虑一下,但是谢谢你! – user1856732
谢谢!那是它:) – user1856732