Gradle maven-publish插件:为所有发布(包括子项目)指定POM属性

ux6nzvsh  于 5个月前  发布在  Maven
关注(0)|答案(1)|浏览(64)

我有一个包含多个子项目的gradle项目。子项目使用maven-publish插件发布一个或多个maven工件。我想将许可证和公司(可能还有其他)信息添加到工件的POM中。
我发现了如何做到这一点,就像这样:

publishing {
    publications {
        mySubprojectsPublication(MavenPublication) {
            artifact subprojectsPackageTask
    
            pom {
                licenses {
                    license { 
                        name = '...'
                        url = '...'
                        distribution = 'repo' 
                        comments = '...' 
                    }
                }
                organization { 
                    name = 'My Organization' 
                    url = 'https://www.MyOrgUrl.com' 
                }
            }
        }
    }

字符串
对于多个子项目(每个子项目可能有多个发布),将pom { ... }部分复制并粘贴到多个build.gradle文件中的每个发布似乎不是最佳的,并且很难维护。
问:是否有办法为项目中的所有出版物指定此许可证?(所有出版物共享相同的许可证类型)

t9eec4r0

t9eec4r01#

我自己找到了解决办法...
我将以下内容添加到rootbuild.gradle

allprojects {
    // add license to each (=.all) publications in all subprojects.
    // "model" block is required to access the publications AFTER they have been configured.
    model {
        publishing {
            publications.all { publication -> pom {
                    licenses {
                        license { 
                            name = '...'
                            url = '...'
                            distribution = 'repo' 
                            comments = '...' 
                        }
                    }
                    organization { 
                        name = 'My Organization' 
                        url = 'https://www.MyOrgUrl.com' 
                    }
                }
            }
        }
    }
}

字符串
如果root build.gradle本身还没有使用maven-publish插件,那么您也需要添加它:

plugins {
    id 'maven-publish'
}


model {}块是必需的,以便在配置项目的所有已配置发布后,将pom信息添加到这些发布中。

相关问题