如何获取常春藤:缓存路径位置,而不检查是否下载了依赖项

我的build.xml有一个任务:

  ...  ...  

这个任务在必要时下载常春藤( init-ivy实际上就是这样),然后调用常春藤下载依赖项。 它将jersey.classpath设置为结果。

现在我的build任务取决于init任务。 因此,每次构建时,都会检查是否需要安装依赖项。 我想避免每次都检查依赖项,并与init分开build 。 但是init设置了jersey.classpath并且build使用它。

有没有办法从常春藤获得jersey.classpath而不要求它检查依赖关系? 在这种情况下不检查依赖关系是一个好习惯吗?

正如在这个答案中解释的那样,常春藤每次运行时都不会下载jar子。 它在“〜/ .ivy2 / cache”下将它们本地缓存:

  • Ant在Build下载一个Jar

其次,你在内联模式下使用常春藤,大概是为了避免创建常春藤文件 ? 常春藤缓存路径被归类为后解决任务,这意味着它将在后台自动调用解析任务。 内联模式的作用是告诉ivy每次执行一个新的解决方案,如果您有多个要管理的类路径,这将是浪费。

最后你考虑过使用常春藤文件吗? 对解决任务的单个调用可以通过所有项目的依赖项工作,在本地缓存此信息,然后确定是否需要下载文件。 我建议总是解决依赖关系。 它的成本并不高,而且构建之间的事情可能已经发生了变化(例如,如果您使用的是动态依赖项,或者是Maven快照)。

以下是常春藤的标准Ant目标:

               

笔记:

  • 称为“解析”的单个目标,它调用常春藤来管理我的项目类路径。 它还为文档生成有用的报告
  • cachepath任务使用常春藤配置对常春藤文件中的依赖项进行分组或分类。 这实际上是效率魔法,可以节省单个分辨率的时间。
  • 注意install-ivy任务如何进行条件检查以确定是否安装了常春藤。 由于复杂性,这个技巧对于项目的其余依赖项是不可行的。 我的建议是确保常春藤存在,然后用它来管理其他一切。 (在引擎盖下它会尽力提高效率)。 我真的不明白为什么Apache Ant没有捆绑常春藤jar子。