如何从依赖列表中的项目收集包含来源的jar?

时间:2014-02-06 19:27:44

标签: gradle

我有一个简单的多项目构建:

root
|___ a
|___ b
|___ c
根项目中的

build.gradle

subprojects {
    task jarSources(type: Jar, dependsOn: classes) {
        classifier = 'source'
        from sourceSets.main.java, sourceSets.main.resources
    }
}
项目build.gradle中的

a

dependencies {
    compile project(':b')
    compile project(':c') 
}

task archiveDependencySources(type: Zip) {
    ...
}

任务archiveDependencySources旨在从项目a所依赖的项目中收集所有具有来源的jar。有没有一种标准的方法来完成这项工作?

到目前为止,我发现这个解决方案看起来有点难看:

def allJarSourcesTasks = []
for (def dep : configurations.compile.dependencies)
if (dep.hasProperty('dependencyProject'))
    allJarSourcesTasks << dep.dependencyProject.tasks['jarSources']

archiveDependencySources.dependsOn allJarSourcesTasks
archiveDependencySources.from allJarSourcesTasks

1 个答案:

答案 0 :(得分:1)

这可能有效(不确定null参数):

allJarSourcesTasks = configurations.compile.getTaskDependencyFromProjectDependency(true, "jarSources").getDependencies(null)

对于dependsOn.getDependencies(null)可以省略,但我认为from需要它。