ant询问用户如果未指定要调用的目标
我有一个antant询问用户如果未指定要调用的目标,ant,Ant,我有一个antbuild.xml文件,其中有3个目标: target1、target2和target3 如果用户只是运行ant,而不是显式的anttarget1或类似的东西,我想提示用户询问他想调用哪个目标 请记住,只有当用户在运行ant时没有显式调用目标时,才会提示用户执行此操作。您可以使用ant提供的输入任务,并将其设为默认目标 <input message="Please enter Target ID (1,2 or 3):" validargs="1,2,3" addproper
build.xml
文件,其中有3个目标:
target1
、target2
和target3
如果用户只是运行ant
,而不是显式的anttarget1
或类似的东西,我想提示用户询问他想调用哪个目标
请记住,只有当用户在运行
ant
时没有显式调用目标时,才会提示用户执行此操作。您可以使用ant提供的输入任务,并将其设为默认目标
<input
message="Please enter Target ID (1,2 or 3):"
validargs="1,2,3"
addproperty="targetID"
/>
使用此属性的值决定要执行的目标
从ant文档中:
消息:在构建运行期间向用户显示的消息
validargs:包含有效输入参数的逗号分隔字符串。如果设置,输入任务将拒绝此处未定义的任何输入。
你可以根据需要传递任何论点
addproperty:要从输入创建的属性的名称。行为等于属性任务,这意味着存在
属性不能被重写
您可以使用ant提供的input
任务,并将其设置为默认目标
<input
message="Please enter Target ID (1,2 or 3):"
validargs="1,2,3"
addproperty="targetID"
/>
使用此属性的值决定要执行的目标
从ant文档中:
消息:在构建运行期间向用户显示的消息
validargs:包含有效输入参数的逗号分隔字符串。如果设置,输入任务将拒绝此处未定义的任何输入。
你可以根据需要传递任何论点
addproperty:要从输入创建的属性的名称。行为等于属性任务,这意味着存在
属性不能被重写
Ant不是一种编程语言,它是一种依赖矩阵语言。这两者之间有很大的区别
在程序语言中,可以指定序列的绝对顺序。另外,你在做事上有更多的灵活性。在Ant中,您不指定执行顺序。您可以指定各种简短的方法来构建这些步骤,然后指定它们的依赖关系。Ant会自动计算出所需的执行顺序
对于开发人员来说,了解Ant是最难的事情之一。我已经见过很多次,当开发人员试图强制执行命令,并最终多次执行同一组目标时。我最近有一个build her,它花了将近10分钟来构建,我重写了build.xml
,在不到2分钟的时间内生成了相同的构建
您可以使用
获取用户输入,然后使用
或
执行另一个Ant进程以执行请求的目标。然而,这打破了蚂蚁的工作方式
默认目标应该是开发人员在编程时希望定期执行的默认目标。它不应该清理构建。它不应该运行10分钟的测试。它应该编译任何更改的文件,并重建war或jar。这就是我99%的时候想要的。整个过程需要10秒
当有人不明白这一点时,我真的很生气。我讨厌当我键入ant
并获得如何执行构建的指导时。当默认目标清除我以前的编译时,我非常恼火。而且,如果有人提示我做些什么,我会充满致命的欲望,用一个大而钝的物体殴打编写这个该死的构建文件的人。这是因为我将运行Ant,在构建过程中执行其他操作,然后在我认为构建完成时返回到该命令窗口。没有什么能让我更生气,当我回到一个构建时,却发现它坐在那里等着我告诉它是哪个目标
如果你真的,真的需要这么做。使用名为build.sh
的shell脚本。不要用build.xml
来做这件事,因为这会影响开发
您真正需要做的是教大家如何使用Ant:
- 当您键入
Ant-p
时,Ant将列出用户可执行目标。这将列出所有目标及其描述。如果目标没有描述,它不会列出它。这对于用户不应该自己执行的内部目标非常有用。(例如,一个目标仅仅进行某种测试以查看是否应该执行另一个目标)。要使此工作正常,请确保您的目标具有描述。当编写Ant文件的人对我不想要的某个次要目标进行了描述,但却忘记了我想要的目标的描述(如compile)时,我很生气。别惹大卫生气。你不想让大卫
- 使用组的默认目标名称。这样,我就知道了目标在整个项目中做了什么,而不是使用
BUILD
vs.buildprograms
vs.Compile
vs.buildmystuff
。我们把名字标准化了。他们被记录在案,没有争论或辩论
- 不要使用
或
强制执行生成顺序。不要把你的build.xml
分成十几个独立的build.xml
程序。所有这些都可能破坏Ant构建目标依赖关系矩阵的能力。此外,许多Ant工具在一个构建中显示依赖层次结构,它们不能跨多个构建文件工作
- 不要将构建包装在shell脚本中。如果您这样做,您可能不了解构建是如何工作的
- 构建不应更新我的工作目录中由我签出的任何文件。它不应该让我的工作目录因为各种各样的构建工件分散在一个