我有一个包含多个子项目的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
文件中的每个出版物似乎不是最理想的且难以维护。
问题:有没有办法为项目中的所有出版物指定这一点? (所有出版物共享相同的许可证类型)
我自己找到了解决方案...
我将以下内容添加到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 信息添加到项目的所有已配置发布中。