sbt에서 종속성 트리를 보는 방법은 무엇입니까?
설명서에 설명 된대로 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가 트리를 구축하지 않는 이유는 무엇입니까?
명령 줄에서 실행할 때 sbt로 전송 된 각 인수는 명령으로 간주되므로 sbt inspect tree clean
다음 과 같이 됩니다.
inspect
명령을 실행하십시오 .- 그런 다음
tree
명령 을 실행하십시오 . - 다음
clean
명령
inspect
인수가 필요하기 때문에 이것은 분명히 실패합니다 . 이것은 당신이 원하는 것을 할 것입니다 :
sbt "inspect tree clean"
작업 종속성 ( inspect tree
표시 되는 내용)이 아닌 라이브러리 종속성 (Maven에서와 같이)을 실제로보고 싶다면 sbt-dependency-graph 플러그인 을 사용하고 싶을 것 입니다.
프로젝트 /plugins.sbt (또는 전역 plugins.sbt)에 다음을 추가합니다.
addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.9.2")
그런 다음 dependencyTree
명령 및 기타에 액세스 할 수 있습니다.
라이브러리 종속성 을 보려면 https://github.com/coursier/coursier/blob/master/doc/FORMER-README.md#printing-treescoursier
플러그인을 사용할 수 있습니다 .
출력 예 : 텍스트 (색상 없음) : https://gist.github.com/vn971/3086309e5b005576533583915d2fdec4
플러그인은 인쇄 트리와 완전히 다른 특성을 가지고 있습니다. 빠르고 동시 종속성 다운로드를 위해 설계되었습니다. 그러나 그것은 훌륭하고 거의 모든 프로젝트에 추가 할 수 있으므로 언급 할 가치가 있다고 생각합니다.
"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".!
}
참고 URL : https://stackoverflow.com/questions/25519926/how-to-see-dependency-tree-in-sbt
'developer tip' 카테고리의 다른 글
Pandas 데이터 프레임 열 헤더를 모두 소문자로 만들려면 어떻게해야합니까? (0) | 2020.10.20 |
---|---|
오류 0xc0202049 : 데이터 흐름 작업 1 : 읽기 전용 열에 삽입하지 못했습니다. (0) | 2020.10.20 |
마이크로 서비스 대 모 놀리 식 아키텍처 (0) | 2020.10.20 |
콘솔에서 메이븐의 확실한 쇼 스택 트레이스 만들기 (0) | 2020.10.20 |
한 단계에서 구분 기호로 문자열 목록 요소 결합 (0) | 2020.10.20 |