我继承了一个 Ant 构建系统,其中包含许多资源集定义,如下所示:
<files id="app1.lib.jars">
<include name="${java}/jre/lib/jsse.jar"/>
<include name="${work.lib}/jtidy.jar"/>
...
</files>
<files id="app2.lib.jars">
<include name="${work.lib}/itext.jar"/>
<include name="${work.lib}/commons-httpclient.jar"/>
...
</files>
<files id="app3.lib.jars">
<include name="${work.lib}/jdom.jar"/>
<include name="${ant.lib}/ant.jar"/>
...
</files>
其中可能有十几个,每个可以包含 5 到 50 个文件。问题是我正在改造这个系统以使用 Ivy 进行依赖管理,并且在此过程中,一些引用现在指向不存在的文件。不幸的是,Ant 没有提供任何帮助来查找这些坏指针。当这些资源集合用于定义类路径时,任何<include...>
指向丢失文件的标记都会被忽略。
我认为我可以通过使用集合作为 a 的来源来强制出错<copy...>
,但即使使用failonerror="true"
它也只是忽略了错误的引用。
命令行-v
(详细)和-d
(调试)选项也没有帮助。输出承认有些丢失但实际上并没有显示出来
[echo] app1.lib.jars
[copy] C:\dev\src\tomcat6\work\java\jre\lib\jsse.jar omitted as C:\dev\src\tomcat6\work\verify\jsse.jar is up to date.
[copy] C:\dev\src\tomcat6\work\lib\axis-ant.jar omitted as C:\dev\src\tomcat6\work\verify\axis-ant.jar is up to date.
...
[copy] No sources found.
[echo] app2.lib.jars
...
对于一次性解决方案,我从 Ant 文件中的资源集中提取所有文件名,并将其与在适当排序后将所有文件(在 Ant 中)复制到临时目录中的结果的目录列表进行比较。
问题:有没有办法让 Ant 在资源指向丢失的文件时告诉我,最好是在定义资源时告诉我?