我有一个简单的多项目构建:
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
答案 0 :(得分:1)
这可能有效(不确定null
参数):
allJarSourcesTasks = configurations.compile.getTaskDependencyFromProjectDependency(true, "jarSources").getDependencies(null)
对于dependsOn
,.getDependencies(null)
可以省略,但我认为from
需要它。