类路径中缺少依赖关系

时间:2015-03-13 00:14:01

标签: sbt javacv javacpp

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

libraryDependencies += "org.bytedeco" % "javacpp" % "0.10"

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

  1. 如果包装类型实际上是pom,这可能意味着它是父pom而你试图依赖错误的东西 - 寻找你真正想要的特定Maven模块!
  2. 另一方面,如果是maven-plugin - 就像在这种情况下一样 - 您需要使用以下代码将包装类型添加到classpathTypesclasspathTypes += "maven-plugin"
  3. 其他情况可能与上述两种情况类似。