我有一个以Gradle作为构建系统的Java项目。
我需要创建两个单一用途的构建任务,但使用不同版本的jar文件。
具体来说,我需要:
-
在本地计算机中使用-LOCAL.jar版本进行本地计算机使用(例如项目名称-本地.jar(
-
对于GitLab CI\CD系统中的构建任务,请使用编号版本(项目名称-1.1.1.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) }
}
}
此任务必须在本地计算机上运行,并创建项目名称-本地.jar。他正在做的是。
如何在另一个具有编号版本的任务中实现这一点,特别是对于 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
并使用常规命令,而无需 GitLab 的 ENV 部分。