【问题标题】:Create an ant file to run other ant files创建一个 ant 文件以运行其他 ant 文件
【发布时间】:2017-02-11 00:00:34
【问题描述】:

我看到this 相关问题,但我的情况不同,所以再次问这个问题。基本上,我有 12 个必须按特定顺序运行的 ant 文件。对于每个 ant 文件,我选择不同的目标,例如“创建”或“全部构建和部署”。如何创建一个 ant 文件来调用所有这些文件的正确目标?

Pseudocode:

<Call antFile1, "clean">
<Call antFile1, "create">
<Call antFile2, "build">
        .
        .
        .
<Call antfile12, "build and deploy all">

【问题讨论】:

  • 当一个ant脚本调用另一个脚本时,我认为你不应该再使用ant了。
  • 还有其他选择吗?
  • 你应该使用一些标准的东西来管理你的项目生命周期,比如 Maven。如果你没有复杂的东西,你会很高兴没有深度学习。如果您详细介绍您的项目,以及您的 ant 脚本实际上做了什么,我们可以提供更多帮助。

标签: ant


【解决方案1】:

在包含 ant 文件中可能有如下目标:

<target name="all">
     <ant antfile="antFile1" target="clean" />
     <ant antfile="antFile2" target="create" />
     ...
</target>

参考这里:http://ant.apache.org/manual/Tasks/ant.html

【讨论】:

  • 如果您想要一个相对于您的 build.xml-parent-folder 的 basedir,请记住将 inheritAll 设置为 false!
【解决方案2】:

你也可以有导入标签:

<import file="my_ant_file.xml">

然后您可以调用该文件中的 ant 目标。如果这样做,您可能需要限定(添加前缀)您的目标名称以避免歧义。

编辑:从导入的文件中调用 ant 目标与调用本地目标完全相同:

<antcall target="my_local_target">
<antcall target="my_target_from_an_imported_file">

您也可以将它们用作依赖项:

<target name="my_target" depends="my_target_from_an_imported_file">

将其视为与在任何编程语言中导入相同的方式。导入后,您可以将其用作文件中的另一个目标。

这里是import documentation

【讨论】:

  • 导入所有文件后,如何调用它们的目标?你能给我一个语法的例子吗?
  • 嗯,问题是当我从某个文件夹中调用其他 ant 文件时,而不是遵循它们自己的属性文件,ant 文件找不到路径变量,因为 master_ant_file (我正在创建的那个) 不存储路径变量(因为每个 ant 构建都有不同的路径变量)。如果我将我调用的第一个 ant 的路径变量放入 maser_ant_file 的属性文件中,则第一个构建执行得很好,但第二个构建找不到它的路径。有没有办法解决这个问题?
  • 对不起,我不确定我能回答那个问题。你可能想问第二个问题,我相信这里的其他人可以帮助你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多