sbt: Как получить список зависимых jar-файлов по коду Scala - PullRequest
0 голосов
/ 08 апреля 2020

Я новичок в жизни. Я хотел бы знать, как получить зависимые файлы JAR по коду Scala, не используя плагин sbt.

В Gradle он поддерживает получение зависимых файлов JAR по коду Java, как показано ниже (project является экземпляром класса Project ):

Configuration config = project.getRootProject().getBuildscript().getConfigurations().detachedConfiguration();
Set<File> jars = config.resolve();

Я хотел бы узнать, как это сделать в sbt и Scala. Кто-нибудь знает это? Я пытался использовать sbt.Project#dependencies, но, похоже, для этого никто не встречается.

1 Ответ

1 голос
/ 09 апреля 2020

Вы ищете dependencyClasspathAsJars:

sbt > inspect dependencyClasspathAsJars

[info] Task: scala.collection.Seq[sbt.internal.util.Attributed[java.io.File]]
[info] Description:
[info]  The classpath consisting of internal and external, managed and unmanaged dependencies, all as JARs.
[info] Provided by:
[info]  ProjectRef(uri("file:/home/claudio/foo"), "foo") / Compile / dependencyClasspathAsJars
[info] Defined at:
[info]  (sbt.Classpaths.classpaths) Defaults.scala:1800
[info] Dependencies:
...

Как видите, это задача, которая возвращает scala.collection.Seq[sbt.internal.util.Attributed[java.io.File]], где Attributed - это простая оболочка для произвольных данных: https://www.scala-sbt.org/1.x/api/sbt/internal/util/Attributed.html

sbt > show dependencyClasspathAsJars

[info] List(Attributed(/home/claudio/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.13.1.jar),                                  
  Attributed(/home/claudio/.ivy2/cache/com.typesafe.play/twirl-api_2.13/jars/twirl-api_2.13-1.5.0.jar),                                          
  Attributed(/home/claudio/.ivy2/cache/org.scala-lang.modules/scala-xml_2.13/bundles/scala-xml_2.13-1.2.0.jar),                                  
  Attributed(/home/claudio/.ivy2/cache/com.typesafe.play/play-server_2.13/jars/play-server_2.13-2.8.1.jar),                                      
  Attributed(/home/claudio/.ivy2/cache/com.typesafe.play/play_2.13/jars/play_2.13-2.8.1.jar),                                                    
  Attributed(/home/claudio/.ivy2/cache/com.typesafe.play/build-link/jars/build-link-2.8.1.jar),                                                  
  Attributed(/home/claudio/.ivy2/cache/com.typesafe.play/play-exceptions/jars/play-exceptions-2.8.1.jar),                                        
  Attributed(/home/claudio/.ivy2/cache/com.typesafe.play/play-streams_2.13/jars/play-streams_2.13-2.8.1.jar),                                    
  Attributed(/home/claudio/.ivy2/cache/org.reactivestreams/reactive-streams/jars/reactive-streams-1.0.3.jar),                                    
  Attributed(/home/claudio/.ivy2/cache/com.typesafe.akka/akka-stream_2.13/jars/akka-stream_2.13-2.6.3.jar),                                      
  Attributed(/home/claudio/.ivy2/cache/com.typesafe.akka/akka-actor_2.13/jars/akka-actor_2.13-2.6.3.jar),                                        
  Attributed(/home/claudio/.ivy2/cache/com.typesafe/config/bundles/config-1.4.0.jar)
  ...)

Если вы хотите обработать значение каким-либо образом, вы, вероятно, захотите написать пользовательское задание: https://www.scala-sbt.org/1.x/docs/Tasks.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...