sbt에서 종속성 트리를 보는 방법은 무엇입니까?


91

설명서에 설명 된대로 SBT 종속성 트리를 검사하려고합니다 .

sbt inspect tree clean

하지만이 오류가 발생합니다.

[error] inspect usage:
[error]   inspect [uses|tree|definitions] <key>   Prints the value for 'key', the defining scope, delegates, related definitions, and dependencies.
[error]
[error] inspect
[error]        ^

뭐가 잘못 되었 니? SBT가 트리를 구축하지 않는 이유는 무엇입니까?


1
@TheKojuEffect 의 sbt> 1.4
UselesssCat

답변:


86

명령 줄에서 실행할 때 sbt로 전송 된 각 인수는 명령으로 간주되므로 sbt inspect tree clean다음 과 같이 됩니다.

  • inspect명령을 실행하십시오 .
  • 그런 다음 tree명령 을 실행하십시오 .
  • 다음 clean명령

inspect인수가 필요하기 때문에 이것은 분명히 실패합니다 . 이것은 당신이 원하는 것을 할 것입니다 :

sbt "inspect tree clean"

22
라이브러리 종속성을 보여주는 것은 무엇입니까 ?? 그렇게 생각하지 마십시오.
prayagupd

2
그것은 나를 위해 일하고 있습니다. 먼저 sbt 콘솔로 이동하여 inspect tree clean 명령을 실행했습니다. 큰 의존성 트리가 있습니다.
일요일

2
나는 이것을 시도했다, 그것은 사물의 비트 트리를 제공합니다. 그러나 나는 외부 라이브러리를 제대로 처리하지 못했습니다. 즉, 출력에서 ​​Akka를 검색했는데 콘솔에 Akka가 표시되지 않았습니다. 쓸모없는 나무를 보여줍니다. 내 로컬 및 종속 모듈에 대한 모든 정보와 세부 정보 만 있습니다. 이 명령은 쓸모가 없습니다. 이 말도 안되는 것보다 명령을 도와주세요.
Sun

2
@Sun : maven / ivy 라이브러리 종속성 을 얻는 방법에 대한 두 번째 답변을 참조하십시오 . 이 inspect tree <foo>명령은 <foo>sbt의 작업 및 설정 시스템에서 작업 의 종속성을 검사하는 데 관한 것으로, 때로는 유용하지만 완전히 다릅니다.
gourlaysama

4
그것은 나무와 같은 것을 인쇄합니다. 허용 대답 안
yerlilbilgin

155

작업 종속성 ( inspect tree표시 되는 내용)이 아닌 라이브러리 종속성 (Maven에서와 같이)을 실제로보고 싶다면 sbt-dependency-graph 플러그인 을 사용하고 싶을 것 입니다.

프로젝트 /plugins.sbt (또는 글로벌 plugins.sbt)에 다음을 추가하십시오.

addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.9.2")

그런 다음 dependencyTree명령 및 기타에 액세스 할 수 있습니다.


19
라이브러리 종속성 정보의 경우 Ivy에서 생성 한 자세한 종속성 보고서도 있습니다. 을 수행 한 후 MSIE와 같은 브라우저에서 sbt updateXML 보고서를 엽니 다 target/resolution-cache/reports/.
Rich

15
도서관을 소개하지 않고는 방법이 없습니까? 나는 maven을 그리워 시작 :(
Jas

5
@Jas Even Maven은 플러그인을 통해이 작업을 수행합니다. 해당 maven은 dependency : tree를 실행할 때 자동으로 플러그인 (org.apache.maven.plugins : maven-dependency-plugin)을
가져옵니다

제거 된 종속성과 빈 줄은 maven의 깨끗한 출력에 비해 쓰레기처럼 보입니다.
MaxNevermind

3
sbt 1.0 이상에서는이 버전이 필요합니다. addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.10.0-RC1")또는 github.com/jrudolph/sbt-dependency-graph 에서 최신 버전 및 지침을 확인하세요.
silverbeak

21

라이브러리 종속성 을 보려면 https://github.com/coursier/coursier/blob/master/doc/FORMER-README.md#printing-treescoursier 플러그인을 사용할 수 있습니다 .

출력 예 : 영상 텍스트 (색상 없음) : https://gist.github.com/vn971/3086309e5b005576533583915d2fdec4

플러그인은 인쇄 트리와 완전히 다른 특성을 가지고 있습니다. 빠르고 동시 종속성 다운로드를 위해 설계되었습니다. 그러나 그것은 훌륭하고 거의 모든 프로젝트에 추가 할 수 있으므로 언급 할 가치가 있다고 생각합니다.


@mjjaniec 감사합니다! 지금은 사용하겠습니다. 변경 될 때 쯤이면 웹 사이트에 이에 대한 적절하고 안정적인 항목이 있기를 바랍니다.
VasiliNovikov 2018


5

"net.virtual-void" % "sbt-dependency-graph"위에서 언급 한 플러그인을 사용해 보았고 Maven mvn dependency:tree출력 의 출력 으로 ~ 180 줄 (내 프로젝트의 각 종속성에 대해 정확히 한 줄)과 비교하여 출력으로 9K 줄을 얻었습니다 (많은 빈 줄과 중복이 있음) . 그래서 나는 Maven 목표, 추악한 해킹에 대한 sbt 래퍼 작업 을 작성 했지만 작동합니다.

// You need Maven installed to run it.
lazy val mavenDependencyTree = taskKey[Unit]("Prints a Maven dependency tree")
mavenDependencyTree := {
  val scalaReleaseSuffix = "_" + scalaVersion.value.split('.').take(2).mkString(".")
  val pomXml =
    <project>
      <modelVersion>4.0.0</modelVersion>
      <groupId>groupId</groupId>
      <artifactId>artifactId</artifactId>
      <version>1.0</version>
      <dependencies>
        {
          libraryDependencies.value.map(moduleId => {
            val suffix = moduleId.crossVersion match {
              case binary: sbt.librarymanagement.Binary => scalaReleaseSuffix
              case _ => ""
            }
            <dependency>
              <groupId>{moduleId.organization}</groupId>
              <artifactId>{moduleId.name + suffix}</artifactId>
              <version>{moduleId.revision}</version>
            </dependency>
          })
        }
      </dependencies>
    </project>

  val printer = new scala.xml.PrettyPrinter(160, 2)
  val pomString = printer.format(pomXml)

  val pomPath = java.nio.file.Files.createTempFile("", ".xml").toString
  val pw = new java.io.PrintWriter(new File(pomPath))
  pw.write(pomString)
  pw.close()

  println(s"Formed pom file: $pomPath")

  import sys.process._
  s"mvn -f $pomPath dependency:tree".!
}

여러분의 코드는 정말 도움이됩니다. BTW 누군가가 Windows에서 이것을 실행하려는 경우 작성하는 mvn.cmd대신 절대 경로를 작성하는 것을 잊지 마십시오mvn
nomadSK25
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.