【问题标题】:Ant : how to always execute a task at the end of every run (regardless of target)Ant:如何在每次运行结束时始终执行任务(无论目标如何)
【发布时间】:2012-10-28 19:33:55
【问题描述】:

有没有办法在 Ant 中定义一个总是在每次运行的结束执行的任务?这个SO question 提供了一种这样做的方法,在每次运行的开始,在执行任何其他目标之前,但我正在研究相反的情况。

我的用例是如果在运行期间发现某个条件,则回显一条消息警告用户,但我想确保它在最后回显,以便引起注意。

【问题讨论】:

  • 您是否尝试过将 echo 移动到 build.xml 的末尾?
  • @cpeisert 我查看了可能的重复项,它似乎正在解决更广泛的问题。
  • @chrislhardin 在脚本开头执行的任何目标之外的回显(即使它们可能位于 build.xml 的“末尾”)。这在 build.xml 视图中是一致的,因为它是一个树状结构,其中文本顺序无关紧要。因此,要在所有目标之前执行某些操作,请将其放在 build.xml 的“根”中,在任何目标之外。但是在哪里放置你需要执行的东西所有目标之后?
  • 您可以将依赖项链接到最终目标并向上链接并将默认设置为该目标并将您的回声放在最后一个块中。这是一个 kludge,但 def 会最后打印。

标签: ant


【解决方案1】:

使用构建监听器,f.e.为每个构建结果提供任务容器的 exec-listener
( BUILD SUCCESSFUL | BUILD FAILED ) 您可以将所有需要的任务放入其中,请参阅:
https://stackoverflow.com/a/6391165/130683
了解详情。

【讨论】:

    【解决方案2】:

    这是一个有趣的情况。通常,我会说您不能以自动方式执行此操作。您可以将 Ant 包装在一些 shell 脚本中来执行此操作,但 Ant 本身确实不是一种完整的编程语言。

    我唯一能想到的就是在每个任务的末尾添加一个<ant> 调用来回显你想要的内容。您可以设置它,如果变量不存在,则不会发生回声。当然,这意味着调用同一个目标十几次才能得到最终的<echo>

    我通过 AntXtras 和 Ant-Contrib 检查了可能的方法,但找不到任何方法。

    对不起。

    【讨论】:

    • 这是一个有用的答案,至少我没有遗漏任何东西。我通常使用“在每个任务结束时调用”方法,因为从 build.xml 脚本中检查 ant 变量比从包装器 shell 脚本中检查更容易。
    【解决方案3】:

    将您的调用包装在顺序容器中。

    http://ant.apache.org/manual/Tasks/sequential.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 2022-08-03
      相关资源
      最近更新 更多