Gradle 构建错误:条目 META-INF/LICENSE.txt 是重复的,但没有重复的处理策略

Ton*_*bey 5 java gradle

我正在尝试使用 gradle 创建一个 fat jar,并且我正在使用以下依赖项

implementation platform('com.amazonaws:aws-java-sdk-bom:1.11.1000')
implementation 'com.amazonaws:aws-java-sdk-core'
implementation("software.amazon.msk:aws-msk-iam-auth:1.1.1")
implementation("org.apache.kafka:kafka-clients:3.0.0")
implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'    
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误

META-INF/LICENSE.txt 条目重复,但未设置重复处理策略

有什么建议么?

cli*_*268 0

我从这里得到了这个答案并且它有效,只需确保在开头添加“duplicatesStrategy = DuplicatesStrategy.EXCLUDE”行到您的 fatJar 任务中,并且应该管理错误。找到第一个后,任何后续的“META-INF/LISCENSE.txt”都将被忽略。其他选项是DuplicatesStrategy.INCLUDE (如果您确实需要它们),这里解释了更多选项,但简要包括:

  • FAIL-错误输出
  • WARN-在构建时抛出警告,但会包含重复项
  • INHERET - 继承任何父CopySpec的函数,如果不存在则 INCLUDE
task fatJar(type: Jar) { 
    manifest.from jar.manifest 
    classifier = 'all' 
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE 
    from { 
        configurations.runtimeClasspath.collect { 
            it.isDirectory() ? it : zipTree(it) 
        } 
    } { 
    exclude "META-INF/*.SF" 
    exclude "META-INF/*.DSA" 
    exclude "META-INF/*.RSA" 
    } 
    with jar 
} 
jar { 
    manifest { 
        attributes 'Main-Class': 'YOUR_MAIN_CLASS' 
    } 
}
Run Code Online (Sandbox Code Playgroud)