Я пытаюсь упаковать два проекта, проект 1 и проект 2 в один и тот же образ докера, с их собственными зависимостями в отдельных папках. Для этой цели я использую третий проект под названием развертывание, который отвечает за создание образа докера. У меня возникает следующая проблема, связанная с использованием разных версий зависимостей для разных проектов Gradle: при создании новой конфигурации в проекте (развертывание) и добавлении зависимостей другого проекта (проекты 1 или 2) в зависимости вновь созданной конфигурации, раздел dependencyManagement развертывания применяется к зависимостям конфигурации, а не к зависимостям управления проектом 1.
Спасибо за помощь.
Мой вариант использования следующий:
Корневой проект --- определяет importBom Spring Platform для всех проектов
allprojects {
dependencyManagement {
imports {
mavenBom "<spring-platform-bom>"
}
}
}
Проект развертывания - его назначение - упаковать проект 1 и проект 2 в образ докера с зависимостями, расположенными в отдельных папках:
private static Task createDeploymentTask(entry, configurationName, project) { //project = deployment, entry = Map.Entry of {project1, project1ConfigurationName}
project.getConfigurations().create(configurationName)
project.getDependencies().add(configurationName, entry.getKey()) //how do I get only the dependencies of project1 ?
project.task("${configurationName}Task", type: Copy) {
into "${project.buildDir}/docker/libs/${entry.getValue()}"
from project.configurations."${configurationName}"
}
}
Подпроект 1 --- использует гуаву из спецификации Spring Paltform (например, гуава 20)
dependencies {
compile 'com.google.guava:guava'
}
Подпроект 2 использует более новую версию гуавы
dependencyManagement {
dependencies {
dependency 'com.google.guava:guava:26.0-jre'
}
}
dependencies {
compile 'com.google.guava:guava'
}
Результатом этого является то, что и проект 1, и проект 2 имеют гуаву 20 из Spring BOM вместо проекта 2 с версией гуавы 26.
Если я добавлю в проект deplyoment этот раздел:
dependencyManagement {
dependencies {
dependency 'com.google.guava:guava:26.0-jre'
}
}
тогда и у проекта 1, и у проекта 2 есть гуава 26, чего я не хочу.