我想编写一个 Gradle 任务以在我的所有子项目中共享。此任务在子项目中查找所有其他类型为“GenerateMavenPom”的任务并执行这些任务。
通过这样做,我的子项目可以定义他们希望的任何 Maven 发布,并且我可以使用诸如“gradle generateMavenPomFiles”之类的单个任务执行 gradle 来创建 pom.xml,而无需知道每个子项目中的各个发布类型。为什么?因为 Maven 插件会创建名称取决于发布类型的发布任务。
在我的子项目 block 在我拥有的根 build.gradle 文件中,通过 子项目作为闭包代表:
task generateMavenPomFiles << {
model {
TaskCollection<GenerateMavenPom> pomTasks = subproject.tasks.matching { t -> t.TASK_TYPE.equals("GenerateMavenPom") }
if (pomTasks != null) {
pomTasks.each { pomTask -> pomTask.execute }
}
}
}
我已经访问了 中的 Maven 发布任务。型号根据插件文档阻止:
The “maven-publish” plugin leverages some experimental support for late plugin configuration, and any GenerateMavenPom tasks will not be constructed until the publishing extension is configured. The simplest way to ensure that the publishing plugin is configured when you attempt to access the GenerateMavenPom task is to place the access inside a model block...
在我的子项目中,我有这样定义的 Maven 出版物:
publishing {
publications {
mavenCustom(MavenPublication) {
artifacts = someArtifactTask.archivePath
groupId = someGroupId
artifactId = someArtifactId
version = someVersion
}
}
}
当然,“gradle generateMavenPomFiles”是行不通的。该任务在每个子项目上执行,但我没有看到由被调用的插件创建的实际 Maven POM 任务。
我对 Gradle + Groovy 还很陌生,所以也许我误解了一些东西,或者我的逻辑是错误的。
任何帮助是极大的赞赏!
最佳答案
您可以使用以下代码段执行此操作:
task runAllGenerateMavenPomTasks {
dependsOn tasks.withType(GenerateMavenPom)
}
关于maven - Gradle - 执行所有 GenerateMavenPom 任务的自定义任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32523775/