এসবিটি-তে নির্ভরতা গাছ কীভাবে দেখবেন?


91

ডকুমেন্টেশনে বর্ণিত হিসাবে আমি এসবিটি নির্ভরতা গাছ পরিদর্শন করার চেষ্টা করছি :

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]        ^

কি সমস্যা? এসবিটি গাছ কেন তৈরি করে না?


এসবিটি> ১.৪ এর জন্য @ দ্য কোজুএফেক্টের সর্বশেষ উত্তরটি দেখুন
ইউসলেসগেটস

উত্তর:


85

কমান্ড লাইন থেকে চালানোর সময় , sbt- এ প্রেরিত প্রতিটি যুক্তি একটি কমান্ড বলে মনে করা হয়, তাই sbt inspect tree cleanহবে:

  • inspectকমান্ড চালান ,
  • তারপরে treeকমান্ডটি চালান ,
  • তারপর cleanআদেশ

এটি স্পষ্টতই ব্যর্থ হয়, যেহেতু inspectএকটি যুক্তি প্রয়োজন। এটি আপনি যা চান তা করবে:

sbt "inspect tree clean"

22
এটি লাইব্রেরি নির্ভরতা কি দেখায় ?? তাই ভাববেন না।
15:56

4
এটি আমার পক্ষে কাজ করছে, প্রথমে, আমি এসবিটি কনসোলে চলে এসে পরিদর্শন করা ট্রি ট্রি ক্লিন কমান্ড চালাচ্ছি । আমি নির্ভরতার বড় গাছ পেয়েছি।
সূর্য

4
আমি এটি চেষ্টা করেছিলাম, এটি জিনিসগুলির বিট গাছ দিচ্ছে। তবে আমি কোনও বাহ্যিক গ্রন্থাগার জরিমানা করি নি। অর্থাৎ আমি আউটপুটে আক্কাকে অনুসন্ধান করেছি, কনসোলে আমি আক্কার কোনও উপস্থিতি প্রদর্শন করিনি। এটি কিছু অকেজো গাছ দেখায়। এটিতে আমার স্থানীয় এবং নির্ভরশীল মডিউলগুলি এবং বিশদগুলি সম্পর্কে সমস্ত রয়েছে। এই আদেশ অকেজো। দয়া করে এই বকাঝকা ছাড়া কোনও আদেশ আমাকে সাহায্য করুন।
সান

4
@ সান: কীভাবে মভেন / আইভির লাইব্রেরি নির্ভরতা পাবেন, তার জন্য দ্বিতীয় উত্তরটি দেখুন যা আপনি সন্ধান করছেন। inspect tree <foo>কমান্ড কাজের নির্ভরতা পরিদর্শন সম্পর্কে <foo>SBT এর টাস্ক & সেটিং সিস্টেম, যা কখনো কখনো দরকারী, কিন্তু সম্পূর্ণ ভিন্ন হয়।
গৌরলেসমা

4
এটি গাছের মতো কিছু ছাপায়। গ্রহণযোগ্য উত্তর হওয়া উচিত নয়
yerlilbilgin

155

আপনি যদি টাস্ক নির্ভরতা (যা inspect treeপ্রদর্শন করে) এর চেয়ে লাইব্রেরি নির্ভরতা (আপনি যেমন মাভেনের সাথে থাকতেন ) দেখতে চান তবে আপনি এসবিটি-নির্ভরতা-গ্রাফ প্লাগইনটি ব্যবহার করতে চাইবেন

আপনার প্রকল্প / প্লাগইনসএসটিটি (বা গ্লোবাল প্লাগইনস.এসবিটি) এ নিম্নলিখিতগুলি যুক্ত করুন।

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

তারপরে আপনার কাছে dependencyTreeকমান্ড এবং অন্যদের অ্যাক্সেস রয়েছে।


19
লাইব্রেরি নির্ভরতা তথ্যের জন্য, আইভির দ্বারা উত্পন্ন বিশদ নির্ভরতার রিপোর্টগুলিও রয়েছে। করার পরে sbt update, এক্সএমএল রিপোর্টগুলি target/resolution-cache/reports/এমএসআইই এর মতো ব্রাউজারে খুলুন ।
ধনী

15
লাইব্রেরি চালু না করে কোন উপায় নেই? আমি মাভেন মিস করতে শুরু করি :(
জেসস

4
@ জাস ইয়েস ম্যাভেন একটি প্লাগিনের মাধ্যমে এটি সম্পাদন করেন, কেবলমাত্র ম্যাভেন প্লাগইনটি ধরে ফেলেন (org.apache.maven.plugins: maven-dependency-પ્લગিন) আপনি যখন নির্ভরতা চালান তখন স্বয়ংক্রিয়ভাবে: বৃক্ষ
জেমেস

উচ্ছেদ হওয়া নির্ভরতা এবং খালি লাইনগুলি ম্যাভেনের পরিষ্কার আউটপুটের তুলনায় এটিকে আবর্জনার মতো দেখায়।
ম্যাকএনভারমাইন্ড

4
এসবিটি ১.০ এবং তার বেশি বয়সের জন্য, আপনার পরিবর্তে এই সংস্করণটি প্রয়োজন: addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.10.0-RC1")অথবা সর্বশেষতম সংস্করণ এবং নির্দেশাবলীর জন্য github.com/jrudolph/sbt-d dependency- অনুগ্রহ করে দেখুন ।
সিলভারবিক

21

আপনি যদি গ্রন্থাগার নির্ভরতা দেখতে চান , আপনি coursierপ্লাগইনটি ব্যবহার করতে পারেন : https://github.com/coursier/coursier/blob/master/doc/FORMER-README.md#printing-tree

আউটপুট উদাহরণ: চিত্র পাঠ্য (রং ছাড়াই): https://gist.github.com/vn971/3086309e5b005576533583915d2fdec4

নোট করুন প্লাগইন গাছ মুদ্রণের চেয়ে সম্পূর্ণ আলাদা প্রকৃতি রয়েছে। এটি দ্রুত এবং সমবর্তী নির্ভরতা ডাউনলোডগুলির জন্য ডিজাইন করা হয়েছে। তবে এটি দুর্দান্ত এবং প্রায় কোনও প্রকল্পে যুক্ত করা যেতে পারে, তাই আমি মনে করি এটি উল্লেখ করার মতো।


@ এমজানীকে ধন্যবাদ! আমি আপাতত এটি ব্যবহার করব। পরিবর্তিত হওয়ার সাথে সাথে, আশা করি ওয়েব সাইটের পক্ষে এটির জন্য একটি উপযুক্ত / স্থিতিশীল প্রবেশ রয়েছে।
ভ্যাসিলিনভিকভ

5

আমি "net.virtual-void" % "sbt-dependency-graph"উপরে উল্লিখিত প্লাগইনটি ব্যবহার করার চেষ্টা করেছি এবং মাভেনের আউটপুটে আউটপুট হিসাবে ~ 180 লাইন (আমার প্রকল্পের প্রতিটি নির্ভরতার জন্য হুবহু একটি লাইন) তুলনায় আউটপুট হিসাবে 9K লাইন পেয়েছি (অনেকগুলি খালি লাইন এবং সদৃশ রয়েছে) mvn dependency:tree। সুতরাং আমি সেই মাভেন গোলটির জন্য একটি এসবিটি র‌্যাপার টাস্ক লিখেছিলাম, এটি একটি কুরুচিপূর্ণ হ্যাক তবে এটি কার্যকর:

// 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".!
}

আপনার কোডটি সত্যই সহায়ক, বিটিডাব্লু যদি কেউ উইন্ডোতে এটি চালানোর চেষ্টা করে তবে দয়া করে mvn.cmdকেবল লেখার পরিবর্তে পরম পথটি লিখতে ভুলবেন নাmvn
nomadSK25

3

এসবিটি ১.৪.০ সহ, dependencyTreeটাস্ক এসবিটি-তে প্লাগ-ইন ব্যবহার না করে উপলব্ধ।

এসবিটি নির্ভরতা ট্রি

এসবিটি ১.৪.০: https://github.com/sbt/sbt/releases/tag/v1.4.0


এই পুরানো প্রশ্ন আপডেট করার জন্য ধন্যবাদ!
রাফা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.