gpt4 book ai didi

Ant:源文件和目标文件是一样的。如何检测变化?

转载 作者:行者123 更新时间:2023-12-02 02:10:46 25 4
gpt4 key购买 nike

我们正在使用 JiBX .重要的是要知道 JiBX 会修改已经编译的类文件。

我们进行编译:

<javac destdir="${main.destdir}">
<src path="${main.srcdir}"/>
<classpath refid="main.classpath"/>
</javac>

然后,我们调用 JiBX:

<jibx load="true"
binding="{$binding.file}">
<classpath refid="main.classpath"/>
<classpath refid="main.destdir.classpath"/>
</jibx>

这使用一个 XML 文件来更新由 <javac> 编译的类文件多于。问题是我怎么知道文件已经被编译,但没有被 JiBX 处理?我想在我的程序中加入一些逻辑,这样文件就不会被 JiBX 更新两次。此外,重复已经完成的工作是不好的形式。

最佳答案

在jibx构建步骤之后,生成一个marker文件,例如

<touch file="${target.dir}/jibx.marker" />

仅当该标记文件早于 .class 文件时才执行 jibx 构建步骤(表明 javac 比最后一个 jibx 运行得最近)。

对于那一点逻辑,您可以使用传统的 ant 方式:

<uptodate property="jibx.uptodate" targetfile="${target.dir}/jibx.marker">
<srcfiles dir="${main.destdir}" includes="...../*.class" />
</uptodate>

然后在调用 jixb 目标时使用带有 unless 子句的属性。

或者,您可以使用 Antcontrib 的过时替代方案:

<outofdate>
<sourcefiles>
<fileset dir="${main.destdir}" includes="...../*.class" />
</sourcefiles>
<targetfiles>
<fileset dir="${target.dir}" includes="jibx.marker"/>
</targetfiles>
<sequential>
<jibx load="true"
binding="{$binding.file}">
<classpath refid="main.classpath"/>
<classpath refid="main.destdir.classpath"/>
</jibx>
</sequential>
</outofdate>

关于Ant:源文件和目标文件是一样的。如何检测变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12963878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com