在sbt中手动检索Ivy依赖项作为本地非托管库

时间:2013-10-02 18:11:11

标签: scala sbt ivy

我在Java / Ant中有一个模式,我使用Ivy来获取任务中的依赖项并将它们放在项目的本地lib /文件夹中。我不想拥有本地Maven,我只希望开发人员在更改内容时运行依赖项更新程序(我在lib / lib中提交了libs)。

如何利用SBT依赖项设置手动将它们提取到本地lib /文件夹并用作“非托管”依赖项(而不是lib_managed)?我真的不想强迫开发人员设置他的ivy.home或构建启动器配置。我宁愿只有一个可调用的任务,它将libs提取到我在build.sbt / scala中指定的位置。有没有这方面的例子?

2 个答案:

答案 0 :(得分:0)

我不使用sbt,但我使用ANT的方法是创建一个设置开发人员机器的引导目标,以便常春藤可用于管理依赖项。看一下下面的例子:

答案 1 :(得分:0)

管理不能一般转换为不受管理。在某些特殊情况下,某些罐子可以放在lib/中并且具有相同的结果行为,但通常不会。问题的例子:

  1. 插件可以请求在自定义配置中下载jar,而非托管则不会涵盖那些
  2. 每个类路径/配置都需要一个包含所有jar的单独目录
  3. 非托管依赖项会丢失关联的元数据,doc会自动将其用于链接到外部网站,例如
  4. 这是现有的Java依赖管理解决方案(Maven / Ivy)的一般问题。可以近似锁定,离线分辨率的想法,但不是特别干净,容易或灵活。 (我知道Ivy的retrieve。)在sbt中,它可能需要使用lib_managed/skip in update := trueoffline := true,并保持update缓存(在target/)中,但未记录或测试。

    (对于长期方向,Adept已将锁定依赖关系和脱机使用锁定为核心目标。)