How to print dependency banks for use in an environment variable?

I wanted to print dependency banks so that I could put them in a classpath variable.

I can get classpath string for dependency jar files.

In explicit form, I can use compile:dependencyClasspath , but it returns a format that needs to be converted manually to a class path string.

 $ sbt "show compile:dependencyClasspath" [info] Set current project to scala-snippets (in build file:/home/tuxdna/work/learn/mine/scala-snippets/) [info] List(Attributed(/home/tuxdna/.ivy2/cache/org.apache.lucene/lucene-core/jars/lucene-core-3.0.1.jar), Attributed(/home/tuxdna/.ivy2/cache/com.netflix.rxjava/rxjava-scala/jars/rxjava-scala-0.15.0.jar), Attributed(/home/tuxdna/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.10.4-RC1.jar), Attributed(/home/tuxdna/.ivy2/cache/com.netflix.rxjava/rxjava-core/jars/rxjava-core-0.15.0.jar), Attributed(/home/tuxdna/.ivy2/cache/com.typesafe.akka/akka-actor_2.10/jars/akka-actor_2.10-2.2.3.jar), Attributed(/home/tuxdna/.ivy2/cache/com.typesafe/config/bundles/config-1.0.2.jar), Attributed(/home/tuxdna/.ivy2/cache/org.scala-lang.modules/scala-async_2.10/bundles/scala-async_2.10-0.9.0-M2.jar), Attributed(/home/tuxdna/.ivy2/cache/org.scala-lang/scala-reflect/jars/scala-reflect-2.10.3.jar), Attributed(/home/tuxdna/.ivy2/cache/org.scala-lang/scala-actors/jars/scala-actors-2.10.2.jar)) [success] Total time: 0 s, completed Dec 17, 2013 4:00:05 PM 

This is how I convert it to a classpath string

 $ sbt "show compile:dependencyClasspath" | grep -B1 'success' | head -1 | ruby -e = STDIN.read; puts s[(s =~ /Attributed(.*?,)/)..-1].split(", ").map { |x| x.sub("Attributed(","").gsub(")", "")}.join(":")' /home/tuxdna/.ivy2/cache/org.apache.lucene/lucene-core/jars/lucene-core-3.0.1.jar:/home/tuxdna/.ivy2/cache/com.netflix.rxjava/rxjava-scala/jars/rxjava-scala-0.15.0.jar:/home/tuxdna/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.10.4-RC1.jar:/home/tuxdna/.ivy2/cache/com.netflix.rxjava/rxjava-core/jars/rxjava-core-0.15.0.jar:/home/tuxdna/.ivy2/cache/com.typesafe.akka/akka-actor_2.10/jars/akka-actor_2.10-2.2.3.jar:/home/tuxdna/.ivy2/cache/com.typesafe/config/bundles/config-1.0.2.jar:/home/tuxdna/.ivy2/cache/org.scala-lang.modules/scala-async_2.10/bundles/scala-async_2.10-0.9.0-M2.jar:/home/tuxdna/.ivy2/cache/org.scala-lang/scala-reflect/jars/scala-reflect-2.10.3.jar:/home/tuxdna/.ivy2/cache/org.scala-lang/scala-actors/jars/scala-actors-2.10.2.jar 

How can I achieve similar functionality with SBT?

I also tried using sbt consoleProject to try to create an SBT task .

Here's how:

 $ sbt sbt> consoleProject scala> val dcc = (dependencyClasspath in Compile) dcc: sbt.TaskKey[sbt.Keys.Classpath] = sbt.Scoped$$anon$2@3fa1115c 

Now I canโ€™t figure out how to use the SBT API to retrieve a list of files. I already tried to understand Classpath from this page .

Any idea how to get a list of files?

+6
source share
1 answer

Any task can define a separate log stream (named export ) and dump information on it. All path class tasks do this.

 sbt "export compile:dependencyClasspath" 

sbt "export <...>" > foo should work if you do not have plugins that write directly to stdout and not to the log.

This was broken before sbt 0.13.2 or 0.13.5 IIRC, but now it should work.

+14
source

All Articles