类路径中缺少依赖关系

Jar*_*rek 7 sbt javacv javacpp

我有一个项目,用于收集安装程序(sbt-install4j)的依赖项dependencyClasspath.它大部分时间都有效,除非我有一个特定的依赖:

libraryDependencies += "org.bytedeco" % "javacpp" % "0.10"
Run Code Online (Sandbox Code Playgroud)

"javacpp"不会被添加到dependencyClasspath.您可以创建一个仅包含上述依赖项的简单SBT项目并尝试show dependencyClasspath,它将打印:

[info] List(Attributed(C:\Users\me\.sbt\boot\scala-2.10.4\lib\scala-library.jar))
Run Code Online (Sandbox Code Playgroud)

没有"javacpp".有什么线索可能会发生什么?这是一个SBT错误吗?

Rob*_*een 2

sbt从它生成的类路径中排除某些打包类型,因为并非所有打包类型都有意义。不幸的是,它似乎默默地进行了这种排除 - 并且 的默认值classpathTypes并不总是您想要的。

pom.xml依赖项的打包类型可以在依赖项的或ivy.xml(如果适用)中找到。主要有两种情况:

  1. 如果打包类型实际上是pom,这可能意味着它是一个父 pom 并且您试图依赖错误的东西- 查找您真正想要的特定 Maven 模块!
  2. 另一方面,如果maven-plugin在这种特殊情况下,您需要将包装类型添加到classpathTypes,使用:classpathTypes += "maven-plugin"

其他情况可能与上述两种情况之一类似。