7

我有一个项目,使用dependencyClasspath. 它大部分时间都有效,除非我有一个特定的依赖项:

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 错误吗?

4

1 回答 1

2

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

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

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

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

于 2015-10-23T18:54:37.960 回答