如何在 Gradle 中创建两个任务

How do I create two tasks in Gradle


我有一个 Java 项目,其中 Gradle 作为构建系统。
我需要创建两个单一用途的 构建任务 ,但具有不同版本的 jar 文件。
具体来说,我需要:

GitLab 的版本 CI\CD 来自提交标签,来自 GitLab 预定义的 ENV 变量。

所以,我有一个默认的 build.gradle 文件,其中:

group = 'projectName'
version = 'LOCAL'
sourceCompatibility = '11'

jar {
    manifest {
        attributes "Main-Class": "projectName.Application"
    }
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

此任务必须在本地计算机上 运行 并创建 projectName-LOCAL.jar。他在做的是。
我如何在另一个任务中使用 numbered 版本实现这一点,特别是对于 GitLab CI\CD?

Gradle 默认将 jar 文件命名为 ${baseName}-${appendix}-${version}-${classifier}.${extension}.

因此您可以根据条件简单地更改 version

像这样的东西应该可以工作:

ext {
    isLocal = System.getenv('ENV') == 'LOCAL'
}

jar {
    if (isLocal) version = 'LOCAL'
}

对于本地工作,您可以使用 ENV=LOCAL ./gradlew jar 并使用没有 ENV 部分的普通命令用于 GitLab。