Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gradle shadow插件包也都是;“提供”;不应该是这种情况的依赖关系_Gradle - Fatal编程技术网

Gradle shadow插件包也都是;“提供”;不应该是这种情况的依赖关系

Gradle shadow插件包也都是;“提供”;不应该是这种情况的依赖关系,gradle,Gradle,我想要一个胖罐子,但是没有提供的依赖项。因此,我使用以下两个插件: 并有一个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 =

我想要一个胖罐子,但是没有提供的依赖项。因此,我使用以下两个插件:

并有一个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
}
但是当我运行
gradleshadowjar
时,我的胖jar中仍然有所有的rangeCache类。如何从fat jar中排除提供的依赖项

编辑1: 这似乎也不起作用,暂时的依赖项仍然被复制到胖罐子中

shadowJar {
    dependencies {
        exclude(project(':rangeCache'))
    }
}
编辑2:根据Stanislav的回答,我做了以下工作以使事情正常工作:

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)
}
看一看关于排除影子jar依赖项的内容

简而言之,根据本文,仅仅通过
shadowJar
的依赖项排除某些依赖项不足以排除它的可传递依赖项,正如您已经提到的那样。解决方法是修改运行时配置,从中排除一些依赖项,如:

configurations {    
    runtime.exclude %what you need to exclude%
}

希望能有所帮助。

这不适用于项目。然而,我在链接的博客文章中选择了第3个解决方案,它运行得非常好