【发布时间】:2018-06-28 04:22:25
【问题描述】:
我有一个 SBT (v0.13) 项目,其中包含多个具有以下依赖项的子项目。根 -> 项目A -> 项目B -> 项目C。像这样:
lazy val projectA = (project in file("projectA")).enablePlugins(PlayScala).dependsOn(projectB)
lazy val projectB = (project in file("projectB")).enablePlugins(PlayScala).dependsOn(projectC)
lazy val projectC = (project in file("projectC")).enablePlugins(PlayScala)
正如我现在所拥有的,由于传递依赖,projectA 可以引用 projectC 中的 API。如何在不将 projectC 类拉入类路径的情况下声明对 projectB 的依赖?
我在 libraryDependencies 中遇到了使用 notTransitive() 的解决方案。像这样:
libraryDependencies ++= Seq(
"groupId" %% "artifactId" % "version" notTransitive()
)
即使我确实以这种方式声明了 projectC 的每个依赖项(糟糕!!!)projectC 的 API 本身仍然可供 projectA 使用。
对于我如何做这样的事情(伪代码)有什么想法吗?
lazy val projectA = (project in file("projectA")).enablePlugins(PlayScala).dependsOn(projectB).notTransitive() // pseudo-code
【问题讨论】:
标签: sbt