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

Gradle,如何强制选择最后一个版本的第三部分依赖项

  •  0
  • elect  · 技术社区  · 6 年前

    我收到了一些关于脏类路径的警告:

    w: Runtime JAR files in the classpath have the version 1.2, which is older than the API version 1.3. Consider using the runtime of version 1.3, or pass '-api-version 1.2' explicitly to restrict the available APIs to the runtime of version 1.2. You can also pass '-language-version 1.2' instead, which will restrict not only the APIs to the specified version, but also the language features
    w: C:\Users\gbarbieri\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-reflect\1.2.50\9fab8887f91c8e17cce1a7522f45dc25976e57b9\kotlin-reflect-1.2.50.jar: Runtime JAR file has version 1.2 which is older than required for API version 1.3
    w: C:\Users\gbarbieri\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib-common\1.2.50\6b19a2fcc29d34878b3aab33fd5fcf70458a73df\kotlin-stdlib-common-1.2.50.jar: Runtime JAR file has version 1.2 which is older than required for API version 1.3
    w: C:\Users\gbarbieri\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib\1.2.50\66d47b004c5b8a1d2d1df9e463187390ed741316\kotlin-stdlib-1.2.50.jar: Runtime JAR file has version 1.2 which is older than required for API version 1.3
    

    然后,我一直试图使用以下命令强制选择这些第三部分依赖项的最后一个版本:

        constraints {
            testImplementation("$kotlin-stdlib:$kotlin_version")
            testImplementation("$kotlin-stdlib-jdk7:$kotlin_version")
            testImplementation("$kotlin-reflect:$kotlin_version")
        }
    

    这在其他项目上也起作用了,但我似乎没法让它起作用 here

    如果我跑

    gradle -q dependencyInsight --dependency kotlin-stdlib --configuration testCompileClasspath

    我明白了 following

    在idea gradle窗口中,我仍然可以看到一些不需要的依赖,比如 kotlin-reflect:1.2.50

    为什么?

    PS:项目是这样的 one

    1 回复  |  直到 6 年前
        1
  •  0
  •   elect    6 年前

    显然,这似乎有效:

    project(":glm") {
        dependencies {
            constraints {
                testImplementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version")
                testImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version")
                testImplementation("org.jetbrains.kotlin:kotlin-reflect:$kotlin_version")
            }
        }
    }
    
    project(":glm-test") {
        dependencies {
            constraints {
                implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version")
                implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version")
                implementation("org.jetbrains.kotlin:kotlin-reflect:$kotlin_version")
            }
        }
    }
    

    但是如果我试图将字符串的开头参数化为 constraints 这样:

    buildscript {    
        ext{
            kotlin = 'org.jetbrains.kotlin:kotlin'
        }
    }
    

    那就没用了…怪异