1

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

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

4

2 回答 2

0

托管通常不能转换为非托管。在某些特殊情况下,可以放入一些lib/具有相同结果行为的罐子,但通常不是这样。问题示例:

  1. 插件可以请求在自定义配置中下载 jars,而 unmanaged 不会涵盖这些
  2. 每个类路径/配置都需要一个包含所有 jar 的单独目录
  3. 非托管依赖项丢失了关联的元数据,这些元数据用于doc自动链接到外部站点,例如

这是现有的 Java (Maven/Ivy) 依赖管理解决方案的普遍问题。可以近似锁定、离线分辨率的概念,但不是特别干净、容易或灵活。(我知道 Ivy 的retrieve.)在 sbt 中,它可能需要使用lib_managed/, skip in update := true, offline := true, 并将update缓存保持在 (in target/) 附近,但这没有记录或测试。

(对于长期方向,Adept将锁定依赖项和离线使用作为核心目标。)

于 2013-10-07T21:51:50.207 回答
0

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

于 2013-10-03T21:57:38.407 回答