如何找出sbt解析依赖关系的位置?

时间:2012-08-05 00:21:07

标签: scala sbt

我正在使用sbt 0.12 RC2

我的项目有一堆库依赖项,其中一些触发其他依赖项。其中一些依赖项是非托管的(在lib/中),有些位于我的本地.ivy2存储库中,有些位于各种远程存储库中。

我正在寻找一个sbt update-verbose或类似的东西,它会告诉我sbt找到每个JAR文件时的确切位置:

[info] Resolving com.nicta#sbt-scoobi;0.0.1 ...
[info] Resolving org.scala-lang#scala-library;2.9.2 ...
[info] Resolving org.apache.opennlp#opennlp-maxent;3.0.1-incubating ...
[info] Resolving jwnl#jwnl;1.3.3 ...

4 个答案:

答案 0 :(得分:3)

sbt生成一份非常详尽的报告,说明target/resolution-cache/reports中依赖关系的确切解析方式。在Web浏览器中打开其中一个.xml文件,您应该会看到所需的所有详细信息。

答案 1 :(得分:1)

我不确定这是否适用于sbt 0.12.x,但是在0.13.x中,如果你可以在~/.ivy/cache/...目录结构中找到你的库所在,那么库的父目录就有一个名为ivydata-x.y.z.properties,其中包含找到依赖项的URL。

例如,如果缓存为akka-streams,则如下所示:

.ivy2
└── cache
    └── com.typesafe.akka
        └── akka-stream_2.11
            ├── docs
            │   └── akka-stream_2.11-2.4.14-javadoc.jar
            ├── jars
            │   └── akka-stream_2.11-2.4.14.jar
            └── srcs
                └── akka-stream_2.11-2.4.14-sources.jar

你应该找到这样的文件,其中包含下载URL:

.ivy2
└── cache
    └── com.typesafe.akka
        └── akka-stream_2.11
            └──ivydata-2.4.14.properties

答案 2 :(得分:0)

您可以使用show compile:dependency-classpath来显示依赖项的位置

答案 3 :(得分:0)

可以通过运行最后

来调用上一个任务的详细信息

详情及更多信息:

Configure and use logging