java.lang.NoClassDefFoundError:antlr/collections/AST设置配置时。all.transitive=false

java.lang.NoClassDefFoundError:antlr/collections/AST设置配置时。all.transitive=false,java,gradle,build.gradle,antlr,Java,Gradle,Build.gradle,Antlr,我正在使用gradle构建一个带有依赖项的胖罐子。最初的脂肪罐是75MB。我可以通过设置以下内容将大小减小到10MB: configurations.all { transitive = false } 但是,现在当我运行gradle构建时,我得到一个新错误: * What went wrong: Execution failed for task ':service-common:metrics:checkstyleMain'. java.lang.NoClassDefFoundEr

我正在使用gradle构建一个带有依赖项的胖罐子。最初的脂肪罐是75MB。我可以通过设置以下内容将大小减小到10MB:

configurations.all {
    transitive = false
}
但是,现在当我运行gradle构建时,我得到一个新错误:

* What went wrong:
Execution failed for task ':service-common:metrics:checkstyleMain'.
java.lang.NoClassDefFoundError: antlr/collections/AST
以下是我的新构建脚本:

buildscript {
    repositories {
        mavenCentral()
        jcenter()
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "com.github.jengelman.gradle.plugins:shadow:5.2.0"
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:latest.release"
    }
}
plugins {
    id 'java'
    id 'maven-publish'
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'maven'
apply plugin: 'antlr'

checkstyleMain.exclude '**/**Test.java'
build_docker.enabled = false

repositories {
    mavenLocal()
    maven {
        url = 'https://repository.cloudera.com/artifactory/cloudera-repos/'
    }
    mavenCentral()
}

configurations.all {
    transitive = false
}

dependencies {
    antlr "org.antlr:antlr4:4.7.1"
    runtime "org.antlr4:antlr4-runtime:4.7.1"
    annotationProcessor 'org.projectlombok:lombok:1.18.6'
    implementation (
        'io.micrometer:micrometer-core:1.6.4',
        'org.slf4j:slf4j-api:1.7.5',
        'org.slf4j:slf4j-log4j12:1.7.5',
        'org.apache.logging.log4j:log4j-api:2.12.1'
    )
    compile (
        'com.fasterxml.jackson.core:jackson-core:2.10.4',
        'com.fasterxml.jackson.core:jackson-annotations:2.10.4',
        'com.fasterxml.jackson.core:jackson-databind:2.10.4',
        'org.apache.commons:commons-lang3:3.8.1',
        'org.json:json:20180813',
        'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.10.0',
        'com.google.guava:guava:19.0',
        'org.apache.kafka:kafka-clients:2.4.1',
        'org.yaml:snakeyaml:1.2+',
        'org.apache.logging.log4j:log4j-slf4j-impl:2.12.1',
        'org.apache.logging.log4j:log4j-core:2.12.1',
        'org.apache.logging.log4j:log4j-api:2.12.1'
    )
    compileOnly 'org.projectlombok:lombok:1.18.6'
    testImplementation (
        'org.mockito:mockito-core:2.22.0',
        'junit:junit:4.12',
        'org.assertj:assertj-core:3.19.0',
        'org.mockito:mockito-all:1.10.19',
        'com.google.code.findbugs:jsr305:3.0.2',
        'net.bytebuddy:byte-buddy:1.10.20'
    )
}


如您所见,我已尝试直接启用antltr插件。但我还是得到了类未找到的错误。我遗漏了什么吗?

我找到了答案。我不得不跑

gradle dependencies

查看需要哪些LIB来检查样式。我手动添加了那些lib,它成功了。

我猜在antlr配置中,
org.antlr:antlr4:4.7.1
需要它的可传递依赖项
antl4运行时
,并且您已经告诉构建放弃它