如何在 Ant 中动态包含 ant-contrib.jar

2023-12-20

我正在寻找一种方法来包含 Ant 文件中的 .jar,以便我可以立即使用它并在我的目标中调用它的方法。 就我而言是ant-contrib-1.0b3.jar.


最好的方法是将 Ant-Contrib jar 文件放入您的项目中。例如,假设build.xml位于您项目的根目录中。创建一个目录名为ant.lib\ant-contrib在你的项目中,然后将ant-contrib*.jar在此文件夹中。您可以将此方法用于您可能需要的其他可选 Ant 任务(例如,Ivy、Findbugs、Cobrrtura 等)。

然后,在你的build.xml文件,你可以这样做:

<taskdef resource="net/sf/antcontrib/antlib.xml">
     <classpath>
         <fileset dir="${basedir}/ant.lib/ant-contrib"/>
     </classpath>
</taskdef>

我喜欢这样做,因为带有任务的可选 jar 包含在项目中。如果您将所有内容都检查到版本控制系统中,那么有人可以检查您的代码并进行构建,而无需下载 Ant-Contrib 并自行安装。

您可以定义 XML 命名空间。这为您的 Ant-Contrib 任务提供了一个前缀,以避免在您使用具有相同任务名称的其他可选 ant 任务时发生任务名称冲突。另外,它还提醒用户这不是标准的 Ant 任务。

如果您使用 XML 命名空间,则需要在您的文件中添加 XMLNS 声明<project>标题。这将包含一个URI它将把您的 Ant Contrib 任务连接到您的 XML 命名空间。例如,ac:命名空间适用于所有 Ant Contrib 任务:

<project name="my.project" default="package" basedir="."
    xmlns:ac="http://ant-contrib.sourceforge.net">

 <taskdef resource="net/sf/antcontrib/antlib.xml"
      uri="http://ant-contrib.sourceforge.net">
     <classpath>
         <fileset dir="${basedir}/ant.lib/ant-contrib"/>
     </classpath>
</taskdef>

它的作用是匹配 XML 命名空间 (xmlns)ac与 URIhttp://ant-contrib.sourceforge.net。 URI 可以是任何内容。例如:

<project name="my.project" default="package" basedir="."
    xmlns:ac="hamburger:with-fries">

 <taskdef resource="net/sf/antcontrib/antlib.xml"
      uri="hamburger:with-fries">
     <classpath>
         <fileset dir="${basedir}/ant.lib/ant-contrib"/>
     </classpath>
</taskdef>

标准是使用类似的东西antlib:net.sf.antcontrib:

<project name="my.project" default="package" basedir="."
    xmlns:ac="antlib:net.sf.antcontrib">

 <taskdef resource="net/sf/antcontrib/antlib.xml"
      uri="antlib:net.sf.antcontrib">
     <classpath>
         <fileset dir="${basedir}/ant.lib/ant-contrib"/>
     </classpath>
</taskdef>

不过,我喜欢使用项目的 URL。这样,如果有人想要有关 Ant-Contrib 任务的文档,他们就知道 Ant-Contrib 项目所在的 URL。

在上述所有三种情况中,我都使用以下命令定义了 XML 命名空间ac。因此,您必须在所有 Ant-Contrib 任务名称前添加前缀ac:。你可以使用antcontrib或者任何你喜欢的东西。随着ac:命名空间,您的 Ant-contrib 任务将如下所示:

<ac:if>
   <istrue value="${include.debug.code}"/>
   <ac:then>
        [...]
   </ac:then>
   <ac:else>
        [...]
   </ac:else>
<ac:if>

如果您跳过整个命名空间,您可以简单地使用文档中的 Ant-Contrib 任务:

<if>
   <istrue value="${include.debug.code}"/>
   <then>
        [...]
   </then>
   <else>
        [...]
   </else>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ant 中动态包含 ant-contrib.jar 的相关文章

随机推荐

  • 用于从 C++ 代码生成 UML 图的 Eclipse 插件

    有没有可以从 C 源代码生成 UML 类图的 eclipse 插件 这也不是 Eclipse 插件 而是Umbrello UML 建模器 http uml sourceforge net index php来自 KDE 的软件是开源的 我使
  • jQuery 缓存 $(this) 有意义吗?

    我仍在学习 jQuery 但我还没有找到可靠的答案 我知道你每次使用 jQuery 选择器时 有性能成本 但确实 this 在大量使用之前应该缓存它会产生很大的成本吗 var this this 如果你经常使用它 是的 它是有意义的 或者是
  • 无法从 PKCS8 获取私钥

    无法从自行生成的 PKCS8 获取私钥 我已经生成了私钥 KeyPair pair getKeyPair StringWriter privateWriter new StringWriter try JcaPEMWriter w new
  • QTextDocument:获取特定页面的内容

    Given a QTextDocument具有特定的宽度和高度 有没有办法在给定页码的情况下获取给定页面的内容 如果页面上有图像 则为纯文本 图像 URL 这是我想要实现的目标的示例 QString getTextForPage int p
  • Android Gradle 5.0 更新:原因:org.jetbrains.plugins.gradle.tooling.util

    关于更新我的项目版本gradle到 5 0 版本时 我在 android studio 中遇到错误 它运行良好gradle 5 0 rc 3 and 4发布 以下是错误详细信息 原因 org jetbrains plugins gradle
  • 寻找一种在 PropertyGrid 中动态更改字段名称的方法

    我已将 COM 对象附加到属性网格 Type typeObj Type GetTypeFromProgID progIdService var obj Activator CreateInstance typeObj propertyGri
  • 如何在 Vuetify 中添加新节点

    我目前正在使用 Vuetify 制作树视图 树视图使用以下结构 items id 1 name Applications children id 2 name Calendar app id 3 name Chrome app id 4 n
  • 如何在 Linux 中分析 pthread 互斥体?

    我想知道如何分析 pthread 互斥体以查看我的代码中是否存在任何锁定争用点 谁喜欢有争议的代码 对吧 正如我提到的 我知道如何对代码进行更一般的分析here https stackoverflow com a 10800412 1158
  • 将数字转换为单词 C# [重复]

    这个问题在这里已经有答案了 可能的重复 如何将整数转换为其语言表示形式 https stackoverflow com questions 554314 how can i convert an integer into its verba
  • 如何在角度材料中启用和禁用滑动切换

    我已经使用 for 循环生成了垫子滑动切换列表 但想要的是 当我单击一个滑动切换时 其他滑动切换应该被禁用 my code HTML div class row div class col md 6 mt 2 div div
  • Wpf 数据网格问题

    要重现此问题 请添加用户控件 粘贴下面的 xaml 然后将实例添加到窗口 最后将窗口的数据上下文设置为 ADummyDataContext 的实例 也在下面 当您第一次运行该应用程序时 您应该得到一个包含三个类别的网格 每个类别包含一只猫
  • 以静态大小的数组作为参数的通用 lambda

    以下通用 多态 lambda 是否合法 C 14 auto f auto x 3 x 0 x 1 etc GCC 和 Clang 4 接受该代码 但 Visual Studio 2017 不接受 合法吗 error C3318 auto 3
  • 反应本机文本颜色不起作用

    我有一个Text里面的组件TouchableOpacity我想改变颜色取决于变量 这是我的代码 import React Component from react import StyleSheet Text View TouchableO
  • CUDA 小内核 2d 卷积 - 如何做

    我已经用 CUDA 内核试验了几天 在 500x500 图像 但我也可以改变尺寸 和非常小的 2D 内核 拉普拉斯 2d 内核 所以它是 3x3 内核 太小 之间执行快速 2D 卷积以利用所有 cuda 线程的巨大优势 我创建了一个 CPU
  • 使用 val() 设置输入值时会触发什么 jquery 事件?

    我可以设置这个监听器 input type text on keyup paste input change function console log Hello 如果我打开DevTools and do input type text v
  • 使用 PHP 将 Javascript 时间转换为 MySQL 格式

    我怎样才能转换js日期 像这样Sun Jul 13 2014 07 00 00 GMT 0200 EET 到 MySQL 格式 像这样2014 07 13 07 00 00 使用PHP 由于您的日期字符串已经包含时区 因此您不需要执行任何特
  • 在eclipse中调试黑莓应用程序“找不到源”问题

    我正在 Eclipse 中调试一个应用程序 它工作正常 但在某些方法上 例如输入EventDispatcher 它显示我找不到源 应附加哪些源文件以避免此问题 我不太清楚 听起来您正在尝试调试 RIM BB 操作系统代码 据我所知 RIM
  • 我可以让 Swing JButton 的边距更小吗?

    我更喜欢边距最小的按钮 大约与文本标题一样宽 有没有办法在 Swing 的 JButton 中实现这一点 我现在在实践中看到的是 即使我尝试使用 setMaximumSize 和类似的方法 它最终也会吃掉文本标题 将其从右侧切断 但这并没有
  • 查询中的日期格式更改

    我在 android 中使用 PHP JSON 作为 API 我使用下面的代码从 MYSQL 数据中获取新闻 它工作正常 但日期格式显示为年 月 日 但我想要得到它日 月 年 我搜索了很多但没有找到任何解决方案 这里有人可以解决我的问题吗
  • 如何在 Ant 中动态包含 ant-contrib.jar

    我正在寻找一种方法来包含 Ant 文件中的 jar 以便我可以立即使用它并在我的目标中调用它的方法 就我而言是ant contrib 1 0b3 jar 最好的方法是将 Ant Contrib jar 文件放入您的项目中 例如 假设buil