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
)
}
}