Sbt 管理多项目常春藤依赖关系
我有一个包含子项目Sbt 管理多项目常春藤依赖关系,sbt,Sbt,我有一个包含子项目foo和bar的多项目构建foo取决于栏 foo和bar都打算通过常春藤依赖项使用。因此,foo对bar具有库依赖性。然而,在我的多项目构建中,我不想使用常春藤依赖项。相反,我希望在指定的目录中查找foo和bar并使用这些目录中的版本进行构建。我想告诉SBT,“你要寻找的常春藤依赖实际上就是这个目录中的SBT项目。” 我希望所有这些都由SBT自动处理。也就是说,我不想进入bar并执行SBT“publish local”以使其工作 作为参考,我的多项目具有build.scala,
foo
和bar
的多项目构建<代码>foo取决于栏
foo
和bar
都打算通过常春藤依赖项使用。因此,foo
对bar
具有库依赖性。然而,在我的多项目构建中,我不想使用常春藤依赖项。相反,我希望在指定的目录中查找foo
和bar
并使用这些目录中的版本进行构建。我想告诉SBT,“你要寻找的常春藤依赖实际上就是这个目录中的SBT项目。”
我希望所有这些都由SBT自动处理。也就是说,我不想进入bar
并执行SBT“publish local”以使其工作
作为参考,我的多项目具有build.scala
,包括以下内容:
lazy val bar = project in file("bar")
lazy val foo = (project in file("foo")).dependsOn(bar)
lazy val myProject = (project in file(".")).dependsOn(foo, bar)
这显然会处理类路径依赖关系,但实际上不会将
bar
中的项目用于foo
Ivy依赖关系。不清楚“将bar项目视为Ivy依赖关系”的确切含义。如果使用dependsOn
,则要在foo
中导入代码的代码应该可以使用bar
。你还想做什么?打包bar
并将其作为JAR文件导入?还有别的事吗?抱歉说不清楚。我的意思是,bar
被发布到常春藤回购协议中,foo
对bar
具有库依赖性。虽然dependsOn
对于实际的Scala依赖性很好,但如果我正在开发和升级bar
(并且没有发布它),那么我希望foo
使用这个版本的bar
,它不起作用,因为SBT抱怨它找不到常春藤回购(即使代码就在“bar”!)。如果我在bar
中发布一个publish local
,它确实可以工作,但SBT似乎应该能够自动处理这个问题,而不必手动发布。这有点像是瞎猜,但是如果将dependsOn(bar)
替换为dependsOn(bar%“compile->publish local”)
会发生什么?如果这不起作用,您可以定义一个自定义任务,该任务首先执行本地发布,然后编译foo
。不幸的是,按照描述更改dependsOn
不起作用。好主意!据我所知,在本地发布是唯一的方法。14天前sbt上有一个github问题,因此可能会出现更好的解决方案!