ant询问用户如果未指定要调用的目标

ant询问用户如果未指定要调用的目标,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

我有一个ant
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脚本中。如果您这样做,您可能不了解构建是如何工作的
  • 构建不应更新我的工作目录中由我签出的任何文件。它不应该让我的工作目录因为各种各样的构建工件分散在一个