maven - Gradle - 执行所有 GenerateMavenPom 任务的自定义任务

标签 maven groovy gradle

我想编写一个 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/

相关文章:

jenkins - Jenkins 管道中的参数是否区分大小写?

java - 如何使用 RestS3Service 克隆 Amazon S3 中的对象

java - 在 Windows 7 中指定 GRADLE_USER_HOME

Gradle - PMD/FindBugs 的默认配置

java - Allure Cucumber JVM 适配器 - 报告显示没有功能没有故事

java - Eclipse 不断将我的 Web 项目重新部署到 tomcat

java - Primefaces 应用程序无法运行

java - Maven 在编译旧的遗留集合代码时给出编译错误

intellij-idea - 无法将常规类导入测试

android - 在 Android Studio 中链接外部库 (gradle)