使用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
相关产品推荐
相关产品推荐

