Saya mencoba memeriksa pohon dependensi SBT seperti yang dijelaskan dalam dokumentasi :
sbt inspect tree clean
Tapi saya mendapatkan kesalahan ini:
[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] ^
Apa yang salah? Mengapa SBT tidak membangun pohonnya?
scala
dependencies
sbt
ceri
sumber
sumber
Jawaban:
Ketika dijalankan dari baris perintah , setiap argumen yang dikirim ke sbt seharusnya menjadi perintah, begitu
sbt inspect tree clean
juga dengan:inspect
perintah,tree
perintahnya,clean
perintahnyaIni jelas gagal, karena
inspect
membutuhkan argumen. Ini akan melakukan apa yang Anda inginkan:sbt "inspect tree clean"
sumber
inspect tree <foo>
perintah tentang memeriksa dependensi tugas<foo>
dalam tugas & pengaturan sistem sbt, yang kadang-kadang berguna, tapi benar-benar berbeda.Jika Anda ingin benar-benar melihat dependensi library (seperti yang Anda lakukan dengan Maven) daripada dependensi tugas (yang
inspect tree
ditampilkan), maka Anda akan ingin menggunakan plugin sbt-dependency-graph .Tambahkan berikut ini ke project / plugins.sbt Anda (atau global plugins.sbt).
addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.9.2")
Kemudian Anda memiliki akses ke
dependencyTree
perintah, dan lainnya.sumber
sbt update
, buka laporan XMLtarget/resolution-cache/reports/
di browser seperti MSIE.addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.10.0-RC1")
Atau kunjungi github.com/jrudolph/sbt-dependency-graph untuk versi dan petunjuk terbaru.Jika Anda ingin melihat dependensi perpustakaan , Anda dapat menggunakan
coursier
plugin: https://github.com/coursier/coursier/blob/master/doc/FORMER-README.md#printing-treesContoh keluaran: teks (tanpa warna): https://gist.github.com/vn971/3086309e5b005576533583915d2fdec4
Perhatikan bahwa plugin memiliki sifat yang sama sekali berbeda dari pohon pencetakan. Ini dirancang untuk unduhan dependensi yang cepat dan bersamaan. Tapi itu bagus dan bisa ditambahkan ke hampir semua proyek, jadi menurut saya itu layak untuk disebutkan.
sumber
Saya mencoba menggunakan
"net.virtual-void" % "sbt-dependency-graph"
plugin yang disebutkan di atas dan mendapatkan 9K baris sebagai output (ada banyak baris kosong dan duplikat) dibandingkan dengan ~ 180 baris (persis satu baris untuk setiap dependensi dalam proyek saya) sebagai output dalam output Mavenmvn dependency:tree
. Jadi saya menulis tugas pembungkus sbt untuk tujuan Maven itu, peretasan yang jelek tetapi berhasil:// 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".! }
sumber
mvn.cmd
alih-alih hanya menulismvn
Dengan sbt 1.4.0,
dependencyTree
tugas tersedia di sbt tanpa menggunakan plugin.sbt 1.4.0: https://github.com/sbt/sbt/releases/tag/v1.4.0
sumber