首页 > 解决方案 > jar中的Gradle Shadow重复文件名

问题描述

我正在尝试从 Ant 构建迁移到 Gradle 构建。我正在使用 Shadow ( com.github.jengelman.gradle.plugins:shadow:5.2.0) 来构建我的项目。我的项目包括 3 个 Apache Axiom 依赖项:

implementation group: 'org.apache.ws.commons.axiom', name: 'axiom-api', version: '1.2.13'
implementation group: 'org.apache.ws.commons.axiom', name: 'axiom-dom', version: '1.2.13'
implementation group: 'org.apache.ws.commons.axiom', name: 'axiom-impl', version: '1.2.13'

Shadow 配置如下所示:

shadowJar {
    baseName = project.name
    classifier = ''
    archiveVersion = ''
    exclude "META-INF/*.SF"
    exclude "META-INF/*.DSA"
    exclude "META-INF/*.RSA"
}

当这些 jar 使用我的 Ant 项目构建时,我最终在 jar 中有 2 个axiom.xml文件。META-INF两者是不同的。

蚂蚁公理.xml

当我使用 Shadow 构建时,我最终得到了两个axiom.xml文件中的后者。第一个文件被后者覆盖。

Gradle axiom.xml

这会导致运行时错误。如何让 Shadow 包含重复文件名的文件,而不仅仅是覆盖它们?

标签: javagradleantgradle-shadow-plugin

解决方案


推荐阅读