gradle - 如何发布Gradle生成的BOM

标签 gradle groovy maven-bom

我具有此配置,但是发布没有任何事情要做,我必须添加/更改什么才能使此BOM正确发布? (它似乎确实正确生成了build/pom.xml)

group 'com.xenoterracide'
version '0.1.0-SNAPSHOT'

repositories {
    maven {
        url System.getenv('JAR_REPOSITORY_URI')
    }
    jcenter()
}

apply plugin: 'maven-publish'
apply plugin: 'maven'

publish {
    repositories {
        maven {
            url System.getenv('JRS_S3_URI')
            credentials(AwsCredentials) {
                accessKey System.getenv('JRS_ACCESSKEYID')
                secretKey System.getenv('JRS_SECRETACCESSKEY')
            }
        }
    }
}


build.doFirst {
    pom {
        project {
            properties {
                equalsverifier   version: "2.3.3"
                mbassador        version: "1.3.1"
                tika             version: "1.15"
                immutables       version: "2.5.5"
                assertj          version: "3.8.0"
                s3mock           version: "0.2.2"
                aws              version: "1.11.207"
                "slf4j-test"     version: "1.1.0"
                "jcabi-matchers" version: "1.3"
            }
            dependencyManagement {
                dependencies {
                    dependency 'nl.jqno.equalsverifier:equalsverifier:${equalsverifier.version}'
                    dependency 'net.engio:mbassador:${mbassador.version}'
                    dependency 'org.apache.tika:tika-core:${tika.version}'
                    dependency 'org.immutables:builder:${immutables.version}'
                    dependency 'org.immutables:value:${immutables.version}'
                    dependency 'io.findify:s3mock_2.12:${s3mock.version}'
                    dependency 'com.jcabi:jcabi-matchers:${jcabi-matchers.version}'
                    dependency 'uk.org.lidalia:slf4j-test:${slf4j-test.version}'
                }
            }
            licenses {
                license {
                    name 'The Apache Software License, Version 2.0'
                    url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    distribution 'repo'
                }
            }

        }
    }.writeTo("$buildDir/pom.xml")
}

使用gradle 4.3

最佳答案

这是可行的,但是对于内容如何进入生成的pom似乎是 super 骇客的。

group 'com.xenoterracide'
version '0.1.0-SNAPSHOT'

repositories {
    maven {
        url System.getenv('JAR_REPOSITORY_URI')
    }
    jcenter()
}

apply plugin: 'maven-publish'
apply plugin: 'maven'


publishing {
    repositories {
        maven {
            url System.getenv('JRS_S3_URI')
            credentials(AwsCredentials) {
                accessKey System.getenv('JRS_ACCESSKEYID')
                secretKey System.getenv('JRS_SECRETACCESSKEY')
            }
        }
    }
    publications {
        maven(MavenPublication) {
            pom.withXml {
                def sb = asString()
                sb.setLength 0
                sb.append  file( "$buildDir/bom.pom" ).text
                println( sb.toString() )
            }
        }
    }
}

build.doFirst {
    pom {
        project {
            packaging 'pom'
            properties {
                equalsverifier   version: "2.3.3"
                mbassador        version: "1.3.1"
                tika             version: "1.15"
                immutables       version: "2.5.5"
                assertj          version: "3.8.0"
                s3mock           version: "0.2.2"
                aws              version: "1.11.207"
                "slf4j-test"     version: "1.1.0"
                "jcabi-matchers" version: "1.3"
            }
            dependencyManagement {
                dependencies {
                    dependency 'nl.jqno.equalsverifier:equalsverifier:${equalsverifier.version}'
                    dependency 'net.engio:mbassador:${mbassador.version}'
                    dependency 'org.apache.tika:tika-core:${tika.version}'
                    dependency 'org.immutables:builder:${immutables.version}'
                    dependency 'org.immutables:value:${immutables.version}'
                    dependency 'io.findify:s3mock_2.12:${s3mock.version}'
                    dependency 'com.jcabi:jcabi-matchers:${jcabi-matchers.version}'
                    dependency 'uk.org.lidalia:slf4j-test:${slf4j-test.version}'
                }
            }
            licenses {
                license {
                    name 'The Apache Software License, Version 2.0'
                    url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    distribution 'repo'
                }
            }

        }
    }.writeTo("$buildDir/bom.pom")
}

因此,如果有人有更好的方法,将不胜感激

关于gradle - 如何发布Gradle生成的BOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47107917/

相关文章:

java - Gradle Eclipse 插件

gradle - 如何使用 Gradle 和 JUnit 5 仅运行特定测试?

java - 如何使用 gradle 获取 Hibernate Search Lucene 的所有依赖项?

maven - 我可以使用要部署到 Nexus 的 Gradle maven 插件创建仅 Maven POM (BOM) 构建吗?

selenium - 如何通过 Spring Boot 使用新版本的库

android - Sonarqube 和 SonarScanner 的关系

java - 制作包含测试文件的 Gradle 项目

unit-testing - Grails单元测试异常java.lang.Exception : No tests found matching grails test target pattern filter

java - 没有找到给定的测试包括 :

java - 将 Maven 父 pom/bom (没有 java src)发布到 Nexus 的正确方法是什么