I have written the following task, which extracts all the compile dependencies for each of my sub-projects and puts them in a per sub-project directory:
task exportCompileLibs << {
subprojects.each { iSubProject ->
iSubProject.configurations.findAll{it.name == "compile"}.each{ jConfig ->
println "copying compile libs for ${iSubProject.name}..."
copy {
into "${iSubProject.buildDir}/gradle-lib-export"
from jConfig
eachFile {println it.name}
}
}
}
}
I’d like to extend this to also export the source artifacts that Gradle does already know about (I can see the source jars in the cache directory), I just can’t figure out how to use the object model to get a handle to them.
The IDEA and Eclipse plugins seem to be able to do this (they point the project files they build directly into the gradle cache), but I can’t figure out how to do it – and looking at the IDE plugin source code, it looks… tricky. I’m hoping there’s something obvious that I’m missing in the gradle DSL or API.
Anyone got any ideas?
For anyone looking for at least an interim solution to this, the following seems to be doing pretty much exactly what I want at the moment.
You have to apply the IDEA plugin to the build.gradle file for each project you want to export the dependencies for:
And then define this task:
And here’s my horrific hack so I don’t have to apply the plugin for each sub-project:
+10 points for not cluttering my build task list with stuff I don’t want, -several million points for ewwwww.