我的项目使用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错误吗?
答案 0 :(得分:2)
sbt
从它生成的类路径中排除某些包装类型,因为并非所有包装类型都有意义依赖。不幸的是,它似乎默默地进行了这种排除 - 而classpathTypes
的默认值并不总是你想要的。
依赖项的包装类型可以在依赖项的pom.xml
或ivy.xml
中找到(如果适用)。主要有两种情况:
pom
,这可能意味着它是父pom而你试图依赖错误的东西 - 寻找你真正想要的特定Maven模块! maven-plugin
- 就像在这种情况下一样 - 您需要使用以下代码将包装类型添加到classpathTypes
:classpathTypes += "maven-plugin"
其他情况可能与上述两种情况类似。