如何以编程方式将依赖项添加到Gradle配置?

时间:2013-09-24 21:06:14

标签: gradle

我有以下代码:

static def getFamilyDependencies(ConfigurationContainer configurations) {
    def result = configurations.collect { configuration ->
        configuration.allDependencies.findAll { dependency ->
            dependency instanceof DefaultProjectDependency
        } collect { projectDependency ->
            projectDependency.dependencyProject.name
        }
    } flatten()

    result as Set
}

我想测试一下。到目前为止,我有:

@Test
void shouldGetFamilyDependencies() {
    final Project project = ProjectBuilder.builder().build()

    final configurations = project.getConfigurations()

    configurations.create('configuration0')
    configurations.create('configuration1')

    configurations.each { configuration ->
        println "***************** ${configuration}"

        configuration.allDependencies.each {
            println "@@@@@@@@@@@@@@@@@ ${it}"
        }
    }
}

如何在配置中添加依赖项?以下不起作用:

    final Project subproject = ProjectBuilder.builder().build()
    configurations.configuration0 {
        subproject
    }
    configurations.configuration1 {
        allDependencies {
            subproject
        }
    }

3 个答案:

答案 0 :(得分:5)

这应该可以解决问题:

configuration.getDependencies().add(dependenyMock);

答案 1 :(得分:3)

@Test
void shouldGetFamilyDependenciesAcrossAllConfigurations() {
    final expected = ['subproject-0', 'subproject-1']

    final Project project = ProjectBuilder.builder().build()
    final configurations = project.getConfigurations()

    configurations.create('configuration-0')
    final Project subproject0 = ProjectBuilder.builder().withName(expected[0]).build()
    project.dependencies {
        delegate.'configuration-0'(subproject0)
    }

    configurations.create('configuration-1')
    final Project subproject1 = ProjectBuilder.builder().withName(expected[1]).build()
    project.dependencies {
        delegate.'configuration-1'(subproject1)
    }

    final actual = RestorePublishedArtifactTask.getFamilyDependencies(configurations)

    assertThat(actual, hasItems(expected.toArray(new String[expected.size()])))
}

答案 2 :(得分:1)

尝试通过这种方式做到这一点:

project.getDependencies().add('compile', project(':common-configuration'))

compile-配置名称
:common-configuration-要添加的项目的名称(或任何其他依赖项)