Scala SBT:依赖于其他SBT项目而不发布
我有一组松散相关的组件,其中一些组件依赖于其他组件。具体来说,假设我们有“公共”、“a”和“b”三个组件。“common”没有任何依赖项,但所有其他项目都使用“common”。此外,“a”依赖于“b”。所有组件都是用Scala编写的,我想使用sbt来构建它们 拥有以下属性非常好:Scala SBT:依赖于其他SBT项目而不发布,scala,build-automation,sbt,Scala,Build Automation,Sbt,我有一组松散相关的组件,其中一些组件依赖于其他组件。具体来说,假设我们有“公共”、“a”和“b”三个组件。“common”没有任何依赖项,但所有其他项目都使用“common”。此外,“a”依赖于“b”。所有组件都是用Scala编写的,我想使用sbt来构建它们 拥有以下属性非常好: 多个人在不同的项目上工作,这就是为什么我们不希望有一个存储库,而是希望每个项目有一个存储库 构建一个项目应该很容易,所有依赖项都应该自动构建(如果必要的话)。也就是说,如果我修改“common”,然后构建“b”,那么应
- 使用子项目迫使我们使用单个存储库,因为所有子项目都必须位于主项目的子目录中李>
- 在本地发布项目并使用托管依赖项是很麻烦的,因为更改“common”然后生成“b”只会在首先生成并发布该项目的情况下拾取“common”中的更改。我可以看出,托管依赖关系在许多情况下都是有用的,但对于我们的特定用例,它们似乎并不能很好地工作。我们经常在几个项目上工作,并同时更改它们。出于这个原因,不得不出版往往显得过于复杂
真的没有办法说一个sbt项目依赖于位于某个(相对)位置的另一个sbt项目,并且让sbt确定何时构建依赖关系吗?使用sbt,您可以使用源依赖关系
lazy val root = Project("root", file("."), settings = ...) dependsOn(dispatchLiftJson)
lazy val dispatchLiftJson = uri("git://github.com/dispatch/dispatch-lift-json#0.1.0")
在本例中,它将从git获取。您可以指定磁盘上的文件位置,尽管我找不到示例。可能
lazy val dep = file("/path/to")
或
我自己也在努力解决这个问题——目前我使用的是publishlocal方法,它可以正常工作 给定目录
/build/some\u app/
/build/some_lib/
/build/some_app/build.sbt
:
lazy val someLib = ProjectRef(file("../some_lib"), "exportedSomeLib")
// = RootProject(file("../some_lib")) also works?
lazy val root = (project in file("."))
.dependsOn(someLib)
lazy val exportedSomeLib = (project in file("."))
在/build/some lib/build.sbt
中:
lazy val someLib = ProjectRef(file("../some_lib"), "exportedSomeLib")
// = RootProject(file("../some_lib")) also works?
lazy val root = (project in file("."))
.dependsOn(someLib)
lazy val exportedSomeLib = (project in file("."))
注意:请注意,在这些文件的两个根作用域中定义的项并不总是会导致错误,但如果键(=值名称)在.sbt文件之间发生冲突,则会在全局(?)作用域中以静默方式更改值<代码>惰性val dep=uri(“file:///path/to“适合我。相对路径也起作用。示例:
lazy val helloWorldProj=uri(“file:///D:/EclipseProjects/helloworld“
或lazy val helloWorldProj=uri(“../helloworld”)
如果我没有错的话,必须将它们添加到build.sbt文件中?