Gradle从生成的pom中删除特定的依赖关系配置

时间:2017-01-17 16:33:23

标签: gradle build.gradle maven-publish

我需要忽略配置中定义的一些依赖关系" configurations.nonDistributable"当使用gradles插件maven-publish生成pom文件时,除了手动解析XML以删除它们之外,我还没有找到一种可行的方法。我错过了什么,gradle允许更简单的方法吗?

build.gradle示例:

configurations{
    nonDistributable
}

dependencies {
    nonDistributable ('org.seleniumhq.selenium:selenium-java:2.52.0'){
        exclude group:'com.google.guava' // included in elasticsearch
    }

    nonDistributable ('com.assertthat:selenium-shutterbug:0.3') {
        transitive = false
    }

    nonDistributable 'mysql:mysql-connector-java:5.1.40'
    nonDistributable fileTree(dir: 'non-distributable-libs', include: '*.jar')
}

// generate subprojects pom
subprojects {
    apply plugin: 'maven-publish'
    model {
        tasks.generatePomFileForMavenJavaPublication {
            destination = file("$buildDir/../../$distDir/build/pom/$project.name-pom.xml")
        }
    }
    afterEvaluate { project ->
        publishing {
            publications {
                mavenJava(MavenPublication) {
                    from components.java
                }
            }
        }
    }
}

// generate root project pom
model {
    tasks.generatePomFileForMavenJavaPublication {
        destination = file("$buildDir/../$distDir/build/pom/$project.name-pom.xml")
    }
}
afterEvaluate { project ->
    publishing {
        publications {
            mavenJava(MavenPublication) {
                from components.java
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您可以创建自己的出版物pom。它看起来像这样:

{{1}}

然后,您可以创建一个特殊配置,该配置仅从您要包含的配置扩展。

我正在使用它创建一个特殊的pom,其中包含用于与主项目分离的集成测试的所有testRuntime依赖项。