无法在根构建文件中获取子项目依赖项。由于某些原因,它们尚未初始化。 是否有可能从 project1 获取依赖项列表,例如 root 内部?
请参阅 copyToLib 任务。它应该从 project1 的依赖关系部分返回值,但实际上并非如此。
Gradle版本是2.0
Root
|
|-project1
| |-build.gradle
|-project2
| |-build.gradle
|-core1
| |-build.gradle
|-core2
| |-build.gradle
|-build.gradle
|-settings.gradle
settings.gradle
include 'project1','project2','core1','core2'
rootProject.name="Root"
PROJECT1:的build.gradle
version = '0.1'
dependencies {
compile project(':core1'),
project(':core2'),
'org.springframework:spring-web:4.0.6.RELEASE'
}
根:的build.gradle
subprojects{
apply plugin: 'java'
apply plugin: 'eclipse'
apply from: "${rootProject.projectDir}/eclipse.gradle"
sourceCompatibility = 1.7
repositories {
mavenCentral()
}
task copyToLib(type: Copy) {
def deps = project.configurations.compile.getAllDependencies().withType(ProjectDependency)
for ( dep in deps ) {
println dep.getDependencyProject().projectDir
}
}
build.dependsOn(copyToLib)
}
答案 0 :(得分:1)
在project
中使用subprojects
变量时,它指的是当前项目 - 在此特定情况下 - root。
您需要从subprojects
闭包中删除添加任务,并添加以下代码:
subprojects.each { p ->
configure(p) {
task copyToLib << {
def deps = p.configurations.compile.allDependencies.withType(ProjectDependency)
for ( dep in deps ) {
println dep.getDependencyProject().projectDir
}
}
p.build.dependsOn(copyToLib)
}
}
简化了任务(它不是Copy
类型) - 您需要区分任务操作和配置。