Java 如何确定Ivy retrieve任务是否更新了我的lib文件夹中的任何依赖项?
我有一个Ant构建,我只想在工件的依赖项被更新时重建它 对于外部依赖项,这很容易,因为我可以将Java 如何确定Ivy retrieve任务是否更新了我的lib文件夹中的任何依赖项?,java,ant,ivy,Java,Ant,Ivy,我有一个Ant构建,我只想在工件的依赖项被更新时重建它 对于外部依赖项,这很容易,因为我可以将ivy.xml的更改日期与工件的创建日期(使用Update)进行比较。但这不适用于我使用latest.release定义依赖项修订版的内部依赖项。像这样: <dependencies> <dependency org="se.woop" name="thelibrary" rev="latest.release" co
ivy.xml
的更改日期与工件的创建日期(使用Update)进行比较。但这不适用于我使用latest.release
定义依赖项修订版的内部依赖项。像这样:
<dependencies>
<dependency org="se.woop" name="thelibrary" rev="latest.release" conf="default->*"/>
</dependencies>
问题是,uptodate
函数将与库文件夹中工件的更改日期进行比较。但是,当文件复制到库文件夹(通过Ivy)时,更改的日期不会更新,但创建的日期会更新
所以。。。是否可以将最新版本
与创建日期进行比较?或者在将依赖项移动到库文件夹时,是否可以让Ivy更新更改的日期?或者它是另一个可用的解决方案?“我有一个Ant构建,我只想在其依赖项更新时重建工件。”停止检查版本
“问题是Update函数与库文件夹中工件的更改日期进行比较。”完全停止使用该函数
“或者它是另一种可用的解决方案?”是的
每次您的程序访问工件时,请稍后再使用它,当它不再需要该工件时,复制该工件,然后将该副本保存为具有计数编号的新工件。如下所示:访问工件_0001,然后在不再需要时使用,新工件_0002保存在库文件夹中。然后删除工件_0001。如果需要在程序外部或内部编辑工件_0002
每次程序运行时,检查工件\u xxxn是否存在,每次检查一个n,直到找到确实存在的工件,然后尝试访问该工件。在xxxx计数的情况下,让它尝试访问工件[xxxx],如果它无法访问工件[U xxxn],则它尝试访问工件[U 000[n+1]等。当计数达到某个数字时,在计数中返回到0或1,然后重新开始。记住,只需在整个n范围内运行两次,即可停止潜在的无止境循环。如果整个artifact\u 000n范围检查了两次,但没有任何内容,那么就创建一个artifact\u默认值,该默认值仅用于让程序运行,当它运行时,会显示一个通知,说明正在使用artifact\u默认值,以便您知道如何修复它
这应该是一个跨语言的解决方案
<uptodate targetfile="build/artifacts/theclient.jar" property="artifact.uptodate">
<srcfiles dir= "src" includes="*"/>
<srcfiles dir= "lib" includes="*"/>
<srcfiles dir= "." includes="ivy.xml"/>
</uptodate>