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

问题描述 投票:0回答:1

我有一个包含多个子项目的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
文件中的每个出版物似乎不是最理想的且难以维护。

问题:有没有办法为项目中的所有出版物指定这一点? (所有出版物共享相同的许可证类型)

gradle pom.xml maven-publish
1个回答
0
投票

我自己找到了解决方案...

我将以下内容添加到root

build.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' 
                    }
                }
            }
        }
    }
}

如果根

build.gradle
尚未使用maven-publish插件本身,您还需要添加它:

plugins {
    id 'maven-publish'
}

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

© www.soinside.com 2019 - 2024. All rights reserved.