如何确定Ivy检索任务是否更新了我的lib文件夹中的任何依赖项



我有一个Ant构建,其中我只想在更新依赖关系时重建工件。

对于外部依赖项,这很容易,因为我可以将ivy.xml的更改日期与工件的创建日期(使用uptodate(进行比较。但这对内部依赖项不起作用,因为我使用latest.release来定义依赖项的修订。像这样:

<dependencies>
<dependency org="se.woop" name="thelibrary" rev="latest.release" conf="default->*"/>
</dependencies>

在这种情况下,项目thelibrary可以在不更改ivy.xml文件的情况下生成新版本。我想要retrieve任务上resolve任务上的checkIfChanged

关于如何解决这个问题,有什么建议吗?

编辑:

我意识到我可能也可以使用uptodate函数来检查我的库文件夹中最新生产的artifactory,而且它几乎可以工作。这就是我目前的样子:

<uptodate targetfile="build/artifacts/theclient.jar" property="artifact.uptodate">
<srcfiles dir= "src" includes="*"/>
<srcfiles dir= "lib" includes="*"/>
<srcfiles dir= "." includes="ivy.xml"/>
</uptodate>

问题是uptodate函数与库文件夹中工件的更改日期进行比较。但是,当文件被复制到库文件夹(由Ivy(时,更改的日期不会更新,而是创建的日期。

所以。。。是否可以将uptodate与创建日期进行比较?或者,在将依赖项移动到库文件夹时,是否可以让Ivy更新更改的日期?或者它是另一种可用的解决方案?

"我有一个Ant构建,其中我只想在更新依赖关系的情况下重建工件"停止检查版本。

"问题是uptodate函数与库文件夹中工件的更改日期进行比较"完全停止使用它。

"或者它是另一种可用的解决方案"对

每次您的程序访问工件时,请稍后使用它,当它不再需要该工件时,复制该工件,然后将该副本保存为带有计数的新工件。像这样:访问artifact_0001,然后使用,然后在不再需要时,在库文件夹中保存一个新的artifact_0002。然后删除artifact_0001。如果需要在程序外部或内部进行编辑,请编辑artifact_0002。

每次运行程序时,检查artifact_xxxn是否存在,每次一个n,直到找到一个确实存在的artifact_000n,然后尝试访问它。让它尝试访问xxxx计数的artifact_[xxxx],如果它不能访问artifact_xxxn,则它尝试访问artifact_000[n+1]等。当计数达到某个数字时,返回计数中的0或1,然后重新开始。记住,只遍历整个n范围两次,就可以停止潜在的无休止循环。如果整个artifact_000n范围被检查了两次,但什么都没有,那么就有一个artifact_default,它只是用来让你的程序运行的,当它运行时,会发出一个正在使用artifact_default的通知,这样你就知道该修复它了。

这应该是一个跨语言的解决方案。

最新更新