Как настроить платформу Gradle Java, чтобы она предпочитала версию с более высокой зависимостью? - PullRequest
0 голосов
/ 10 марта 2020

Я получаю следующую ошибку в моем многомодульном проекте с пружинной загрузкой.

Dependency resolution failed because of conflict(s) on the following module(s):
   - org.javassist:javassist between versions 3.24.0-GA and 3.20.0-GA

Причина root в том, что spring-boot-starter-data-jpa транзитивно зависит от 3.24.0-GA и spring-boot-starter-thymeleaf транзитивно зависит от 3.20.0-GA. Я использую Gradle Java Platform Pulgin вместо плагина Spring Boot Gradle.

Вопрос:

  • Как настроить платформу Gradle Java, чтобы она предпочитала версию с более высокой зависимостью? Я хочу исправить конфликт разрешением централизованно, а не в каждом проекте.

Gradle Platform Project

plugins {
    `java-platform`
}

javaPlatform {
    allowDependencies()
}

dependencies {
    api(enforcedPlatform("org.springframework.boot:spring-boot-dependencies:2.2.5.RELEASE"))
    constraints {
        api(project(":core"))
        api(project(":email"))
        api(project(":security"))
        api(project(":app"))
        api("com.github.bbottema:emailaddress-rfc2822:2.1.4")
        api("com.icegreen:greenmail:1.5.11")
        api("nl.jqno.equalsverifier:equalsverifier:3.1.12")
        api("com.google.guava:guava:28.2-jre")
    }
}

Модуль безопасности Gradle Project

plugins {
    `java-library-conventions`
}

dependencies {
    implementation(project(":core"))
    implementation(project(":email"))
    implementation("org.springframework.boot:spring-boot-starter-security")
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("org.springframework.boot:spring-boot-starter-thymeleaf")

    testImplementation(testFixtures(project(":core")))
    testImplementation(testFixtures(project(":email")))
}

Полный отчет о зависимостях

./gradlew :security:dependencyInsight --configuration compileClasspath --dependency org.javassist:javassist

> Task :security:dependencyInsight
Dependency resolution failed because of conflict(s) on the following module(s):
   - org.javassist:javassist between versions 3.24.0-GA and 3.20.0-GA

org.javassist:javassist:3.24.0-GA
   variant "compile" [
      org.gradle.status              = release (not requested)
      org.gradle.usage               = java-api
      org.gradle.libraryelements     = jar (compatible with: classes)
      org.gradle.category            = library

      Requested attributes not found in the selected variant:
         org.gradle.dependency.bundling = external
         org.gradle.jvm.version         = 11
   ]
   Selection reasons:
      - By conflict resolution : between versions 3.24.0-GA and 3.20.0-GA

org.javassist:javassist:3.24.0-GA
\--- org.hibernate:hibernate-core:5.4.12.Final
     +--- org.springframework.boot:spring-boot-dependencies:2.2.5.RELEASE
     |    \--- project :platform
     |         \--- compileClasspath
     \--- org.springframework.boot:spring-boot-starter-data-jpa:2.2.5.RELEASE
          +--- compileClasspath (requested org.springframework.boot:spring-boot-starter-data-jpa)
          \--- org.springframework.boot:spring-boot-dependencies:2.2.5.RELEASE (*)

org.javassist:javassist:3.20.0-GA -> 3.24.0-GA
\--- ognl:ognl:3.1.12
     \--- org.thymeleaf:thymeleaf:3.0.11.RELEASE
          +--- org.springframework.boot:spring-boot-dependencies:2.2.5.RELEASE
          |    \--- project :platform
          |         \--- compileClasspath
          +--- org.thymeleaf:thymeleaf-spring5:3.0.11.RELEASE
          |    +--- org.springframework.boot:spring-boot-dependencies:2.2.5.RELEASE (*)
          |    \--- org.springframework.boot:spring-boot-starter-thymeleaf:2.2.5.RELEASE
          |         +--- compileClasspath (requested org.springframework.boot:spring-boot-starter-thymeleaf)
          |         \--- org.springframework.boot:spring-boot-dependencies:2.2.5.RELEASE (*)
          \--- org.thymeleaf.extras:thymeleaf-extras-java8time:3.0.4.RELEASE
               +--- org.springframework.boot:spring-boot-dependencies:2.2.5.RELEASE (*)
               \--- org.springframework.boot:spring-boot-starter-thymeleaf:2.2.5.RELEASE (*)

(*) - dependencies omitted (listed previously)

A web-based, searchable dependency report is available by adding the --scan option.

BUILD SUCCESSFUL in 757ms
1 actionable task: 1 executed
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...