Gradle зависимость от проекта для всех конфигураций

Я пытаюсь использовать Gradle вместо Ant/Ivy. Я пытаюсь создать зависимости между моими проектами для всех конфигураций, так что, например, project1.compile зависит от project2.compile, project1.runtime зависит от project2.runtime, так далее.

В Ivy я сделал это с помощью следующего XML:

project1 / ivy.xml

<dependency conf="*->@" org="myorg" name="project2" rev="latest.integration" />

В Gradle вот что я попробовал:

project1 / build.gradle

configurations.each { config ->
    config.dependencies.add project(path: ':project2', configuration: config.name)
}

Но он жалуется, что project функция не существует:

> Could not find method project() for arguments [{path=:project2, configuration=archives}] on project ':project1'.

Есть идеи, как это сделать?

2 ответа

Решение
configurations.all { config ->
    project.dependencies.add(config.name, 
        project.dependencies.project(
            path: ':project2', configuration: config.name))
}

Всем, кто ищет рабочий ответ на тот же вопрос в 2023 году:

      configurations.all {
    withDependencies {
        add(
            project.dependencies.module("org.example:example-artifact:0.0.1") // external dependency
        )
        add(
            project.dependencies.platform("org.example:example-bom:0.0.1") // platform BOM
        )
        add(
            project.dependencies.project(":project2") // project submodule
        )
    }
}
Другие вопросы по тегам