2012-08-05 87 views
7

我正在使用sbt 0.12 RC2如何找出sbt从哪里解决依赖关系?

我的项目有一堆库依赖项,其中一些触发其他依赖项。其中一些依赖项是非托管的(在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 ... 
+0

相关:https://stackoverflow.com/questions/21111989/how-to-find-out-which-dependency-caused-a-particular-library-to-be-downloaded – Matt 2016-08-13 10:03:39

回答

0

您可以使用show compile:dependency-classpath显示在depedencies是

+0

这并不能给我什么我在找。它只是列出了Java类路径。我想知道,例如对于依赖关系'com.nicta#sbt-scoobi; 0.0.1',它实际上来自于它(例如非托管的'lib /'目录,本地'〜/ .ivy2'版本库,本地'〜/ .m2'存储库,特定的远程Ivy2或Maven存储库等)。 – 2012-08-05 21:44:44

+0

'归因于(/Users/guillaume/.ivy2/cache/org.specs2/specs2_2.9.1/jars/specs2_2.9.1-1.11.jar)'所以这个来自'〜/ .ivy2' – 2012-08-05 23:34:40

+3

不,这就是缓存。这不是来源。它不会告诉你它是从本地还是远程发起,或者从哪里发起。 – 2012-08-08 13:52:03

0

我不知道这是否适用于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 

,你应该找到这样一个文件,其中包含下载网址:

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

sbt产生了如何一个非常广泛的报告完全依赖关系已在target/resolution-cache/reports中解决。在网络浏览器中打开.xml文件之一,您应该看到所有需要的细节。