有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Ant是否支持基于文件的依赖关系?

我想创建一个ant依赖项,其中目标文件依赖于源文件。你如何用ant来描述这一点

例如,将此Make目标转换为ant

data.txt: header1.txt body.txt footer.txt
      cat header1.txt body.txt footer.txt > data.txt

共 (3) 个答案

  1. # 1 楼答案

    我现在的简单解决方案是在我的shell脚本中手动添加一个源/目的文件年龄测试,该脚本在ant中从exec task调用

  2. # 2 楼答案

    如果您只是想使一个目录中的文件相对于源代码树是最新的, 您可以使用^{}任务。以下是文档中的一个基本示例:

    <sync todir="site">
      <fileset dir="generated-site"/>
    </sync>
    

    overwrites all files in site with newer files from generated-site, deletes files from site that are not present in generated-site.

    如果您需要确定哪些资源需要更新, 为了执行比同步更复杂的操作, 您可以使用ant-contrib^{}任务。比如说

    <outofdate property="compile.needed" outputsourcespath="sources.for.recompile">
        <sourcefiles>
            <fileset dir="${src}" includes="*.c"/>
        </sourcefiles>
        <mapper type="glob" dir="${src}" from="*.c" to="${obj}/*.o"/>
    </outofdate>
    

    如果任何对象文件与源文件相比已过期,则将compile.needed设置为true, 并且还设置路径sources.for.recompile,其中只包含需要重新编译的源的列表- 然后,您可以编译这些源代码

    (此处假设构建输出区域中的单个文件与一个源直接相关。)

  3. # 3 楼答案

    您可能可以执行类似的操作,但它开始听起来像是脚本。Ant不是一种脚本语言。如果你脑子里有很多“如果/那么/否则”的逻辑,那么你可能是做错了

    请描述“其他数据”。我们是在谈论复制文件吗?这是devl/test/prod环境问题吗?在这种情况下,您当然可以传入一个指定环境名称的参数,并使用条件测试来决定要复制哪个集。阅读this了解如何使用