java.lang.NoClassDefFoundError:antlr/collections/AST设置配置时。all.transitive=false
我正在使用gradle构建一个带有依赖项的胖罐子。最初的脂肪罐是75MB。我可以通过设置以下内容将大小减小到10MB: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
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运行时
,并且您已经告诉构建放弃它