Использование Gradle 5.1 "платформы реализации" вместо плагина управления зависимостями Spring - PullRequest
0 голосов
/ 06 января 2019

Я написал плагин Gradle, который содержит набор общих настроек, так что во всех наших проектах нужно просто применить этот плагин и набор зависимостей. Он использует плагин управления зависимостями Spring для настройки импорта спецификации для Spring, как показано в фрагменте кода ниже:

trait ConfigureDependencyManagement {
    void configureDependencyManagement(final Project project) {
        assert project != null

        project.apply(plugin: "io.spring.dependency-management")

        final DependencyManagementExtension dependencyManagementExtension = project.extensions.findByType(DependencyManagementExtension)
        dependencyManagementExtension.imports {                 
            mavenBom "org.springframework.boot:spring-boot-dependencies:2.1.0.RELEASE"
        }
     }
  }

Хотя это все еще работает в Gradle 5.1, я хотел заменить плагин управления зависимостями Spring новым механизмом зависимости для импорта спецификаций, поэтому я обновил вышеприведенное, чтобы оно стало таким:

trait ConfigureDependencyManagement {
    void configureDependencyManagement(final Project project) {
        assert project != null

        project.dependencies.platform("org.springframework.boot:spring-boot-dependencies:2.1.0.RELEASE")
    }
}

К сожалению, это изменение означает, что ни одна из зависимостей, определенных этими спецификациями, не импортируется, и я получаю подобные ошибки при создании проектов?

Не удалось найти org.springframework.boot: spring-boot-starter-web :. Требуется: проект:

Не удалось найти org.springframework.boot: spring-boot-starter-data-jpa :. Требуется: проект:

Не удалось найти org.springframework.boot: spring-boot-starter-security :. Требуется: проект:

Правильно ли я считаю, что плагин Spring Dependency Management больше не нужен в Gradle 5.1, и если да, то я что-то упустил, чтобы это работало?

1 Ответ

0 голосов
/ 08 января 2019

Поддержка платформы в Gradle 5 может заменить плагины управления зависимостями Spring для использования спецификации. Однако плагин Spring предлагает функции, которые не поддерживаются Gradle.

Что касается вашей проблемы, проблема заключается в следующей строке:

project.dependencies.platform("org.springframework.boot:spring-boot-dependencies:2.1.0.RELEASE")

Это просто создаст Dependency, его все равно нужно добавить в конфигурацию. делая что-то вроде:

def platform = project.dependencies.platform("org.springframework.boot:spring-boot-dependencies:2.1.0.RELEASE")
project.dependencies.add("configurationName", platform)

где configurationName - это имя конфигурации, для которой требуется спецификация. Обратите внимание, что вам может потребоваться добавить эту спецификацию в несколько конфигураций, в зависимости от вашего проекта.

...