我们将把Ivy与Ant一起使用,并且让Jenkins进行构建。我本来以为让詹金斯(Jenkins)<ivy:cleancache/>在运行构建之前先做一个好主意。(这将是强制性的“清洁”目标的一部分)。
<ivy:cleancache/>
但是,我现在看到的<ivy:cleancache>不仅是从中清除内容<ivy:cachepath>,而且实际上是删除了整个$HOME/.ivy/cache目录。
<ivy:cleancache>
<ivy:cachepath>
$HOME/.ivy/cache
我担心的是,如果Jenkins <ivy:cleancache>在所有构建开始之前都进行了构建,它将干扰Jenkins可能正在执行的其他构建。
这是<ivy:cleancache>一个好主意吗,特别是如果一个用户可能同时进行多个构建时?
实际上,当您<ivy:cachepath pathid="compile.path"/>在多个项目中执行操作时会发生什么?这还会影响詹金斯吗?如果同时构建多个版本,Jenkins会感到困惑compile.cachepath吗?
<ivy:cachepath pathid="compile.path"/>
compile.cachepath
在我看来,在每个版本中运行ivy cleancache任务都是过大的,并且消除了使用ivy,智能下载第三方依赖项的主要好处之一。
话虽如此,如以下相关的Maven问题所述,所有缓存都可能变脏,应定期清除:
当您从远程存储库检索所有依赖项时,本地存储库仅不过是一个缓存。
像所有缓存一样,Maven本地存储库有时可能会变得“脏”。在公认的偏执狂和过度杀伤行为中,我安排了定期的cron工作来清除构建机器上的本地存储库。这将强制与我的Nexus Maven存储库重新同步。
几个建议:
我的第一个建议是创建一个定期的Jenkins作业,该作业在您的构建中调用以下“全部清除”目标:
<target name="clean-all" depends="clean"> <ivy:cleancache/> </target>
这样可以确保Jenkins决定清除缓存的时间,并且可以将其安排为在正常构建时间之外进行(例如,每月的1号凌晨2点)
我的第二条建议增加了项目构建之间的隔离度。使用caches指令将每个项目配置为拥有自己的专用缓存。在您的常春藤设置文件中。