You need to enable JavaScript to run this app. 使用Maven Publish插件时如何排除pom.xml中的指定依赖?
优惠活动
大模型
产品
解决方案
定价
更多

使用Maven Publish插件时如何排除pom.xml中的指定依赖?

解决方法

你可以通过以下两种方案实现需求,优先推荐适配shadow插件设计逻辑的方案二:

方案一:直接修改publications发布配置(符合你要调整publications块的需求)

在原有发布配置中增加pom过滤规则,同时兼容pom.xml和Gradle模块文件的依赖移除:

publishing {
    publications {
        pluginJar(MavenPublication) {  publication ->
            from project.shadow.component(publication)
            artifact sourceJar
            
            // 新增以下依赖过滤配置
            pom {
                // 移除pom.xml中的指定依赖
                withXml {
                    def dependenciesNode = asNode().get("dependencies")?.getAt(0)
                    if (dependenciesNode) {
                        dependenciesNode.children().removeAll { dep ->
                            dep.groupId.text() == "com.example" && dep.artifactId.text() == "lib"
                        }
                    }
                }
                // 移除Gradle .module模块文件中的指定依赖
                dependencies {
                    exclude group: 'com.example', module: 'lib'
                }
            }
        }
    }
}

方案二:调整依赖声明(更简洁,符合shadow插件设计逻辑)

如果你这个com.example:lib是需要完全打进shadow fat jar、不需要对外暴露的依赖,直接修改你的依赖配置即可,不需要改动publications块:

dependencies {
    shadow gradleApi()
    shadow localGroovy()
    // 将原来的implementation改成shadow
    shadow 'com.example:lib:0.1.0'
}

shadow插件默认不会将shadow配置下的依赖写入pom.xml和模块文件的依赖列表,从根源避免多余依赖出现。


内容的提问来源于stack exchange,提问作者pixel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 02:51:02