使用 Ant 遍历目录

2024-04-24

假设我有一个包含以下路径的 PDF 文件集合:

/some/path/pdfs/birds/duck.pdf
/some/path/pdfs/birds/goose.pdf
/some/path/pdfs/insects/fly.pdf
/some/path/pdfs/insects/mosquito.pdf

我想要做的是为每个 PDF 生成尊重相对路径结构的缩略图,并输出到另一个位置,即:

/another/path/thumbnails/birds/duck.png
/another/path/thumbnails/birds/goose.png
/another/path/thumbnails/insects/fly.png
/another/path/thumbnails/insects/mosquito.png

我希望这可以在 Ant 中完成。假设我要在命令行上使用 Ghostscript,并且我已经完成了对 GS 的调用:

    <exec executable="${ghostscript.executable.name}">
        <arg value="-q"/>
        <arg value="-r72"/>
        <arg value="-sDEVICE=png16m"/>
        <arg value="-sOutputFile=${thumbnail.image.path}"/>
        <arg value="${input.pdf.path}"/>
    </exec>

所以我需要做的是计算出正确的值${thumbnail.image.path} and ${input.pdf.path}遍历 PDF 输入目录时。

我可以访问 ant-contrib(刚刚安装了“最新”版本,即 1.0b3)并且我正在使用 Ant 1.8.0。我想我可以使用<for> task, <fileset>s and <mapper>s,但我很难将它们放在一起。

我尝试过类似的事情:

    <for param="file">
        <path>
            <fileset dir="${some.dir.path}/pdfs">
                <include name="**/*.pdf"/>
            </fileset>
        </path>
        <sequential>
            <echo message="@{file}"/>
        </sequential>
    </for>

但不幸的是@{file}property 是绝对路径,我找不到任何简单的方法将其分解为相关组件。

如果我只能使用自定义任务来完成此操作,我想我可以编写一个,但我希望我可以将现有组件插入在一起。


在顺序任务中,您可以使用ant-contrib propertyregex 正则表达式 http://ant-contrib.sourceforge.net/tasks/tasks/propertyregex.html将输入路径映射到输出的任务。例如:

<propertyregex override="yes" property="outfile" input="@{file}"
               regexp="/some/path/pdfs/(.*).pdf"
               replace="/another/path/\1.png" />

例如哪些地图/some/path/pdfs/birds/duck.pdf to /another/path/birds/duck.png.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Ant 遍历目录 的相关文章

  • 将 JaCoCo 与 SONAR 集成以实现单元和集成测试覆盖

    有没有人尝试使用 ANT 构建配置 JaCoCo 将单元测试和集成测试的覆盖范围转储到 2 个不同的文件中 以便 SONAR 使用它们 这是一个可行的解决方案 为单元测试和集成测试生成报告 该解决方案使用的是append战略 请注意 为了在
  • 要复制到 Windows 共享 (SMB) 的 Ant 任务

    是否有 ant 任务 类似于 ftp 或 scp 任务 允许我将一组文件复制到 Windows smb 共享 编辑 我必须为此使用 jcifs 创建一个任务 如果有人需要 这里是代码 取决于 jcifs 和 apache ioutils i
  • Ant 邮件任务 - 发送带附件的邮件时出现问题

    当我尝试使用 ant 邮件任务时 它在发送带有附件的邮件时似乎不起作用 我当前面临的问题是 它在电子邮件正文中发送附件内容 而不是作为附件 即使详细输出显示为 它也是通过附件发送的 由于最初它抱怨缺少 jars 我添加了 mail jar
  • Ant exec 结果属性不起作用

    我正在使用 Ant 调用批处理文件exec任务并将结果设置为resultpropery 但返回值永远不会到达Ant 下面是我的代码
  • 如何从不同(子)目录中打包 java 源文件?

    考虑以下目录结构 source com mypackage A java extensions extension1 source com mypackage T java extensions extension2 source com
  • “copyfiles”是标准的 Ant 任务吗?

    我有一个 NetBeans 项目 我正在尝试从命令行手动编译ant 当在安装了 NetBeans 的同一台计算机上运行时 它可以完美运行 但是 如果我跑ant在中央持续集成服务器 未安装 NetBeans 上 它在
  • java 使用外部 jar 文件构建 ant 文件

    我创建了一个 ant 构建文件来将 java src 编译为 jar 文件 它使用外部 jar 文件 我的文件目录 src android Address java HelloServer java HelloServerResource
  • 使用 Apache Ant 清理陈旧的 .class 文件

    怎样清理陈旧的东西 class文件出自 workdir 给定一组现有的 java文件在 srcdir 我所说的陈旧是指 class从现在开始生成的文件被删除 java文件 我尝试过使用 Ant 映射器和文件集等来想出一些东西 但失败了 删除
  • 找不到工具.jar

    我正在尝试构建 JOGL 的副本 但ant一直给我错误找不到tools jar 所以我在我的 JDK 目录中搜索 但也找不到它 有人可以帮我找到tools jar吗 您确定正在搜索您的JDK目录而不是JRE目录 我希望它在 JDK 中lib
  • “没有关于每次测试覆盖范围的信息。”来自 Sonar 和 Jacoco Ant 构建

    我正在使用 Ant Jacoco 和 Sonar 当我运行构建时 声纳告诉我 没有有关每个测试覆盖范围的信息 声纳仪表板有我的覆盖结果 但我无法深入研究它们以查看代码 然而 Jacoco 生成的 HTML 报告确实包含深入到代码中的内容 这
  • 如何在ivy中强制执行HTTPS?

    这是我的 ivy xml
  • 在一致的环境中执行Java程序

    在我工作的地方 我们有一个 shell 脚本 它允许我们使用所有必要的库和设置执行任意 Java 类 例如 bin sh JAVA HOME bin java cp LONG LIST OF JARS Xmx6g XX MaxPermSiz
  • Ant,从远程机器下载文件集

    据我所知 当通过 scp 任务从远程计算机下载文件时 ant 不提供 文件集 属性 从本地计算机发送文件时它可以工作 但在远程计算机中启动时它不起作用 这是来自文档 因此 在远程计算机中 我在每个目录中都有一些文件夹和文件负载 我想下载所有
  • Ant JUnit ClassNotFoundException

    我意识到有很多类似的问题this one https stackoverflow com questions 10658636 new to ant classnotfoundexception with junit 但是在阅读了其中的大多
  • 在使用 ant 为库项目构建 Android 测试时,如何使用 emma 过滤器?

    从这个问题 使用 ant 构建 Android 测试时如何使用 emma 过滤器 https stackoverflow com questions 7360972 how can i use filter for emma when bu
  • ant-找不到符号@Test

    我正在尝试编译以下仅包含一个函数的类 公共类测试注释 Test public void testLogin System out println Testing Login 当我将文件作为 JUNIt 运行时 它可以工作 但是当我尝试从 b
  • 通过ant编译jdk

    我想编译jdk文件以包含调试信息 我想使用 ant 因为它包含在我的 NetBeans 环境中 所以我做了以下操作 将 src zip 解压到 tmp 目录中 在我的 tmp 目录中创建了一个非常简单的 build xml 文件 一个默认目
  • 停止 ant 脚本而不导致构建失败

    在我的 ant 脚本中 我想在满足条件时退出 停止执行构建 而不会失败 我尝试过使用
  • 使用 Proguard 混淆 ActionBarSherlock

    我正在尝试使用混淆我的 Android 应用程序proguard and ant eclipse proguard从来不工作 总是失败error 1 但我越来越class file unexpectedly contains class 到
  • 如何使用蚂蚁?

    我一直试图了解 Ant 的用途 但我仍然不明白 有人可以给我一个使用 Ant 的用例吗 我可以尝试看看 Ant 为何有用以及我可以用它做什么 我在 Eclipse 中进行 Java 开发 并且刚刚开始使用 servlet 和 Google

随机推荐

  • 敏捷术语中的用户故事和功能有什么区别? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我猜想一个功能可能是 信用卡授权 之类的东西 而用户故事可能是 为贝宝授权信用卡 那么 用户故事是功能的子集吗 是的 类似子集的东西 这篇文章值得一读
  • 如何替换所有带有“.”的哈希键?

    我正在使用 Ruby on Rails 4 我想替换所有哈希键 以便将哈希值从 h before aaa bbb gt 1 c gt 2 to h after bbb gt 1 c gt 2 也就是说 我想以某种方式 解调 所有具有 我怎样
  • 如何使用 PhoneGap 开发者应用程序调试 Phonegap

    Phonegap 刚刚推出了一种方法 可以通过使用以下命令在本地服务器上立即查看对 Phonegap 应用程序的更改 phonegap serve 然后下载 PhoneGap 开发者应用程序 说明在这里 http app phonegap
  • Docker 卷和主机权限

    当我运行 docker 镜像时 例如 docker run v home n1 workspace root workspace it rust latest bash 我在容器中创建一个目录 例如 mkdir root workspace
  • Servlet 过滤器在 AWS 上返回“代理错误”

    我已经设置了一个Filter为我的 GWT Web 应用程序添加爬网程序支持 这个想法是捕获所有包含 escaped fragment 并为爬虫提供快照 我已经设置了Filter使用 Guice 如下 filter through Craw
  • 如何将文件上传到 SharePoint 文件夹

    我一直在尝试将文件上传到我的 SharePoint 2013 服务器 我正在使用 REST API 从 Android 应用程序执行此操作 我只能上传文本文件 即 txt rtf 我就是这样做的 我点击的网址 https mysite co
  • 如何从 Android 手机获取 GPS 数据?

    有没有办法将 Android 手机的 GPS 数据连接 USB 有线 到 PC 我目前正在使用基于 gpsd 项目的 GPSTether 应用程序 我正在寻找比该应用程序提供更多控制且错误更少的替代方案 另外 是否有另一种方法可以在不使用任
  • 如何将 xsl 变量值传递给 javascript 函数

    我正在尝试将 xsl 变量值传递给 javascript 函数 我的 xsl 变量
  • 如何使用 python 在 mongoengine 中对 dict 中包含的嵌套字典或数组执行此类过滤查询?

    假设我有以下 dict 对象 a value of a somedict someinfo name Jordan food fries coke drink 如果我想使用 mongoengine 在 python 中应用查询过滤器 我该怎
  • 为 pandas 创建自定义插值函数

    我目前正在尝试使用 pandas 清理和填充一些缺失的时间序列数据 插值函数工作得很好 但是它没有我的数据集所需的一些 不太广泛使用的 插值函数 几个例子是一个简单的 最后 有效数据点 它会创建类似于阶跃函数的东西 或者类似对数或几何插值的
  • 为什么没有用户代理为视频元素实现 CSS 光标样式

    我想知道是否可以更改 CSS 属性cursor在默认 HTML5 上video元素 到目前为止 我的测试已经得出结论 没有用户代理 浏览器 实现cursor pointer默认情况下 所以你只剩下正常的操作系统箭头 控制指示器 当您尝试设置
  • “未捕获的引用错误:窗口未定义”p5.js Web Worker

    我有一个 javascript 代码 我将网络工作者与 p5 js 库一起使用 它不允许我使用 p5 的任何功能 所以我必须使用importScripts p5 js 在使用 p5 的任何函数之前导入 p5 js 库的函数 onmessag
  • Swift 泛型类作为委托

    我在 swift 中使用泛型类作为委托时遇到了问题 例如我尝试使用通用 NSFetchedResultsDelegate 定义为 class FetchedTableController
  • 使用 React 和 webpack 4 拆分项目; html 标签是意外的标记

    背景 我正在使用 React babel webpack4 和 es6 或者可能是 es7 我有一些模块被多个反应项目重用 因此 我创建了一个包含这些模块的 标准 文件夹 以便它们与任何特定项目分开 Problem 在我的 React 项目
  • 为 WinSocks 和 *nix 制作非阻塞套接字

    在 C C 中 如何将 WinSocks 和 nix 中的阻塞套接字转换为非阻塞套接字 这样 select 就能正常工作 您可以将预处理器用于特定于平台的代码 在Linux上 fcntl fd F SETFL O NONBLOCK Wind
  • Java 中的合成字段是什么? [复制]

    这个问题在这里已经有答案了 有人可以用一种易于理解的方式解释 Java 中合成字段的重要性吗 我记得在非静态内部类的上下文中阅读它 其中每个此类内部类实例都维护对封闭类的引用 为什么这样的引用 字段被称为合成字段 合成字段是编译器创建的字段
  • Xcode 永远快速索引

    我目前正在使用 swift 和 Xcode 6 Beta 3 开发一个 iOS 应用程序 到目前为止一切都很顺利 但现在随着我的项目的增长 Xcode 突然开始索引 并且一次又一次地这样做 使得 Xcode 几乎无法使用 我在网上搜索了类似
  • aws CLI 比使用 boto3 更快吗?

    我有存储在 s3 存储桶中的包 我需要读取每个包的元数据文件并将元数据传递给程序 我用了boto3 resource s3 在 python 中读取这些文件 该代码需要几分钟才能运行 如果我使用 aws clisync 它下载这些图元文件的
  • 更好的 boost asio Deadline_timer 示例

    我正在寻找一个更好的例子boost asio deadline timer 给出的例子总是会超时并调用close方法 我尝试打电话cancel 在计时器上但这会导致函数传递到async wait立即被呼叫 在异步 tcp 客户端中使用计时器
  • 使用 Ant 遍历目录

    假设我有一个包含以下路径的 PDF 文件集合 some path pdfs birds duck pdf some path pdfs birds goose pdf some path pdfs insects fly pdf some