gpt4 book ai didi

Gradle shadow 插件还打包了所有 "provided"依赖项,这不应该是这种情况

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

我想要一个 fat jar 子,但没有提供的依赖项。所以我使用了以下两个插件:

  • https://github.com/johnrengelman/shadow
  • https://github.com/nebula-plugins/gradle-extra-configurations-plugin

  • 并有一个像这样的 build.gradle 文件:
    apply plugin: 'nebula.provided-base'
    apply plugin: 'com.github.johnrengelman.shadow'

    archivesBaseName = 'range-cache-drivers'
    group = 'com.engine'
    version = '0.302-SNAPSHOT'

    buildDir = 'target'

    sourceCompatibility = 1.8
    targetCompatibility = 1.8


    dependencies {
    provided project(':rangeCache')

    // CSV, TSV, Fixe width
    compile deps.univocityParsers
    // MongoDB
    compile deps.mongo
    // Cassandra
    compile deps.cassandradx
    compile deps.cassandraSnappy
    compile deps.cassandraLZ4
    }

    但是当我运行 gradle shadowJar我的 fat jar 子里仍然有所有的 rangeCache 类。如何从我的胖 jar 中排除提供的依赖项?

    编辑 1:
    这似乎也不起作用, transient 依赖项仍然被复制到胖 jar 中。
    shadowJar {
    dependencies {
    exclude(project(':rangeCache'))
    }
    }

    编辑 2:根据斯坦尼斯拉夫的回答,我做了以下工作以使事情正常工作:
    configurations {
    shadow
    compile.extendsFrom provided
    provided.extendsFrom shadow
    }

    dependencies {
    provided project(':rangeCache')

    // CSV, TSV, Fixe width
    shadow deps.univocityParsers

    // MongoDB
    shadow deps.mongo

    // Cassandra
    shadow deps.cassandradx
    shadow deps.cassandraSnappy
    shadow deps.cassandraLZ4

    testCompile deps.junit
    }

    import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar

    task fatJar(type: ShadowJar) {
    configurations = [project.configurations.shadow]
    from(project.sourceSets.main.output)
    }

    最佳答案

    看看this article关于排除 shadow jar 依赖项。
    很快,根据这篇文章,通过 shadowJar 排除一些依赖的依赖项不足以排除其传递依赖项,正如您已经提到的那样。如何做到这一点的解决方案是修改运行时配置,从中排除一些依赖项,例如:

    configurations {    
    runtime.exclude %what you need to exclude%
    }
    我希望,它可能会有所帮助。

    关于Gradle shadow 插件还打包了所有 "provided"依赖项,这不应该是这种情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33525048/

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