maven - 如何排除Gradle生成的POM文件中的依赖

标签 maven gradle pom.xml

我正在使用“maven”插件将 Gradle 构建创建的 Artifact 上传到 Maven 中央存储库。我正在使用类似于以下任务的任务:

uploadArchives {
  repositories {
    mavenDeployer {
      beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

      pom.project {
        name 'Example Application'
        packaging 'jar'
        url 'http://www.example.com/example-application'

        scm {
          connection 'scm:svn:http://foo.googlecode.com/svn/trunk/'

          url 'http://foo.googlecode.com/svn/trunk/'
        }

        licenses {
          license {
            name 'The Apache License, Version 2.0'
            url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
          }
        }

      }
    }
  }
}

但是,此任务创建的 POM 文件没有正确报告已在我的 Gradle 构建文件中排除的依赖项。例如:
dependencies {
    compile('org.eclipse.jgit:org.eclipse.jgit.java7:3.5.2.201411120430-r') { exclude module: 'commons-logging' }
    compile('com.upplication:s3fs:0.2.8') { exclude module: 'commons-logging' }
}

如何在生成的 POM 文件中正确管理排除的依赖项?

最佳答案

您可以通过过滤掉不需要的依赖项来简单地覆盖 pom 的依赖项,例如要排除 junit,您可以将以下行添加到 mavenDeployer 配置中:

pom.whenConfigured {
    p -> p.dependencies = p.dependencies.findAll { 
        dep -> dep.artifactId != "junit" 
    }
}

关于maven - 如何排除Gradle生成的POM文件中的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29147643/

相关文章:

java - 基于配置文件的 Maven 子依赖项

java - Windows 上的 Hbase 集成测试

java - 如何配置maven hbm2hbmxml和hbm2java在mvn clean install中依次运行

使用没有标记 "activeByDefault"的默认配置文件激活 Maven 配置文件

java - 未找到 Spring-data-elasticsearch Maven 依赖项

android - Android 库项目可以是单个项目(而不是多项目构建)吗?

java - 错误:任务 ':app:transformClassesWithMultidexlistForDebug' ccid-1.1.5的执行失败

android - 符号 $CompletionFailure : class file for ActivityDeparturesBinding not found

java - maven - 将 jar 和 ant zip 文件发布到存储库

testng - 如何在 Maven 中从 pom.xml 调用 testng.xml 文件