gpt4 book ai didi

Gradle 4.8+ 使用自定义配置打破了 ivy 发布

转载 作者:行者123 更新时间:2023-12-03 04:17:27 24 4
gpt4 key购买 nike

我有一个 gradle 文件,它在一些古老版本的 gradle 中工作,但我想升级到 gradle 5.0。不幸的是,它使用 ivy 而不是 maven 来发布它的 jars。我已将其简化为一个简单的测试用例。

我不确定我是否遗漏了某些东西或它的错误或什么。我在下面附上了gradle。我正在运行它

./gradlew wrapper && ./gradlew publish --info && cat build/publications/ivy/ivy.xml
  • 它在 4.7 中按预期工作。它发布主 jar 和源 jar 并添加依赖项。
  • 如果我切换到 4.8 它会中断,它只会发布源 jar、主 jar 并且缺少依赖项。
  • 如果我切换到 4.8 并注释掉配置位,它会再次发布主 jar 和依赖项。

  • 也许有一种新的做事方式,但如果是这样,我就找不到它的记录位置。这是源代码 build.gradle。
    plugins {
    id 'java'
    id 'ivy-publish'
    }

    sourceSets {
    testSupport {
    java {
    compileClasspath += main.output
    runtimeClasspath += main.output
    }
    }
    test {
    java {
    compileClasspath += testSupport.output
    runtimeClasspath += testSupport.output
    }
    }
    }

    dependencies {
    compile group: 'com.ibm.icu', name: 'icu4j', version: '58.2'
    compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.3'
    compile group: 'io.swagger', name: 'swagger-parser', version: '1.0.32'
    }

    task sourceJar(type: Jar) {
    from sourceSets.main.allJava
    }

    task testSupportJar(type: Jar) {
    from sourceSets.testSupport.output
    appendix "test-support"
    }

    task testSupportSourceJar(type: Jar) {
    from sourceSets.testSupport.java.srcDirs
    appendix "test-support-sources"
    }
    artifacts {
    archives sourceJar
    archives testSupportJar
    archives testSupportSourceJar
    }
    publishing {
    repositories {
    ivy {
    name = 'myRepo'
    url = "file://${buildDir}/repo"
    layout "pattern", {
    artifact "[organisation]/[module]/[revision]/jars/[artifact].[ext]"
    ivy "[organisation]/[module]/[revision]/ivys/ivy-[revision].xml"
    }
    }
    }
    publications {
    ivy(IvyPublication) {
    organisation = 'com.example.com'
    // If you comment out the configurations below it will generate sensible ivy.xml
    configurations {
    "compile" {}
    "runtime" {}
    }


    from components.java
    artifact(sourceJar) {
    type "source"
    extension "src.jar"
    conf "runtime"
    }
    }
    }
    }

    wrapper {
    // 4.7 works but 4.8+ doesn't.
    gradleVersion = '4.7'
    }

    最佳答案

    哦,伙计,我刚刚想通了。它是 from components.java 的相对顺序和 configurations元素位。如果 configurations首先它似乎优先于 from components.java后者似乎被忽略了。如果你把 from components.java之前 configurations它可以工作,您不必再手动声明它默认生成的配置。

    FFS 分级。

    关于Gradle 4.8+ 使用自定义配置打破了 ivy 发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53611226/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com