Конфигурационный раздел управления зависимостями в Gradle - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь упаковать два проекта, проект 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, чего я не хочу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...