代码之家  ›  专栏  ›  技术社区  ›  JSBach

当我的应用程序依赖于依赖于不同micronaut版本的库时,找不到micronaut bom的匹配变体

  •  0
  • JSBach  · 技术社区  · 4 年前

    我有一个这样的图书馆。格雷德尔锉刀

    plugins {
        id "java-library"
        id "maven"
        id "com.jfrog.artifactory" version "4.9.8"
    }
    ...
    dependencies {
        annotationProcessor platform("io.micronaut:micronaut-bom:2.0.0")
        annotationProcessor "io.micronaut:micronaut-inject-java"
        annotationProcessor "io.micronaut:micronaut-validation"
        implementation platform("io.micronaut:micronaut-bom:2.0.0")
        implementation "io.micronaut:micronaut-inject"
        implementation "io.micronaut:micronaut-runtime"
        implementation "javax.annotation:javax.annotation-api"
        implementation "io.micronaut.security:micronaut-security"
        runtimeOnly "ch.qos.logback:logback-classic:1.2.3"
    }
    ....
    

    以及一个使用此库的应用程序:

    plugins {
        id "net.ltgt.apt-idea" version "0.21"
        id "com.github.johnrengelman.shadow" version "5.0.0"
        id "application"
        id 'com.bmuschko.docker-remote-api' version '6.6.0'
    }
    ....
    dependencies {
        // Micronaut dependencies
        annotationProcessor platform("io.micronaut:micronaut-bom:${micronautVersion}")
        annotationProcessor "io.micronaut:micronaut-inject-java"
        annotationProcessor "io.micronaut:micronaut-validation"
        annotationProcessor "io.micronaut.data:micronaut-data-processor"
        implementation platform("io.micronaut:micronaut-bom:${micronautVersion}")
    implementation("com.acme:my-library:0.0.1-SNAPSHOT")
        ...
    }
    ....
    

    当micronaut版本在app和lib之间存在差异时(即使只有补丁版本),我在尝试构建时会收到以下消息:

    Could not determine the dependencies of task ':implementation:shadowJar'.
    > Could not resolve all dependencies for configuration ':implementation:runtimeClasspath'.
       > Could not resolve io.micronaut:micronaut-bom:2.0.0.
         Required by:
             project :implementation > com.acme:my-library:0.0.1-SNAPSHOT
          > No matching variant of io.micronaut:micronaut-bom:2.0.2 was found. The consumer was configured to find a runtime of a library compatible with Java 11, packaged as a jar, and its dependencies declared externally but:
              - Variant 'apiElements' capability io.micronaut:micronaut-bom:2.0.2:
                  - Incompatible because this component declares an API of a platform and the consumer needed a runtime of a library
                  - Other compatible attributes:
                      - Doesn't say anything about how its dependencies are found (required its dependencies declared externally)
                      - Doesn't say anything about its target Java version (required compatibility with Java 11)
                      - Doesn't say anything about its elements (required them packaged as a jar)
              - Variant 'enforcedApiElements' capability io.micronaut:micronaut-bom-derived-enforced-platform:2.0.2:
                  - Incompatible because this component declares an API of an enforced platform and the consumer needed a runtime of a library
                  - Other compatible attributes:
                      - Doesn't say anything about how its dependencies are found (required its dependencies declared externally)
                      - Doesn't say anything about its target Java version (required compatibility with Java 11)
                      - Doesn't say anything about its elements (required them packaged as a jar)
              - Variant 'enforcedRuntimeElements' capability io.micronaut:micronaut-bom-derived-enforced-platform:2.0.2 declares a runtime of a component:
                  - Incompatible because this component declares an enforced platform and the consumer needed a library
                  - Other compatible attributes:
                      - Doesn't say anything about how its dependencies are found (required its dependencies declared externally)
                      - Doesn't say anything about its target Java version (required compatibility with Java 11)
                      - Doesn't say anything about its elements (required them packaged as a jar)
              - Variant 'runtimeElements' capability io.micronaut:micronaut-bom:2.0.2 declares a runtime of a component:
                  - Incompatible because this component declares a platform and the consumer needed a library
                  - Other compatible attributes:
                      - Doesn't say anything about how its dependencies are found (required its dependencies declared externally)
                      - Doesn't say anything about its target Java version (required compatibility with Java 11)
                      - Doesn't say anything about its elements (required them packaged as a jar)
    

    我可能做错了什么,因为Gradle应该处理版本冲突。我错过了什么?

    0 回复  |  直到 4 年前
        1
  •  1
  •   Graeme Rocher    4 年前

    这是由于不推荐使用的“maven”插件,该插件计划在Gradle 7.0中删除

    你应该删除这个插件,改用“maven publish”