Question

When using a managed dependency, I can tell sbt to download the javadocs and sources:

"mygroup" % "mymodule" % "myversion" withJavadoc() withSources()

But these jars don't seem to be on the runtime classpath?

What I would like to do, is access the javadocs and sources from my application. Can I make these jars appear as managed resources, such that I could do

ClassLoader.getSystemClassLoader.getResource("/my/package/MyDependency.scala")

?

Was it helpful?

Solution

You can do this by adding a classifier.

For a given library dependency, add a javadoc or sources classifer:

libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.0.6" classifier "javadoc"

libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.0.6" classifier "sources"

Then, access its contents from the classpath:

val docStream = getClass.getResourceAsStream("""/scalaz/Monad$.html""")
val doc = io.Source.fromInputStream(docStream).mkString
println(doc)

Here's a working example: https://earldouglas.com/ext/stackoverflow.com/questions/22160701/

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top