【发布时间】:2020-01-31 02:36:33
【问题描述】:
我有一个使用 Gradle 作为构建系统的 Java 项目。
我需要创建两个单一用途的构建任务,但使用不同版本的 jar 文件。
具体来说,我需要:
本地机器中的构建任务使用 -LOCAL 版本的 .jar(例如 projectName-LOCAL.jar)
GitLab CI\CD 系统中的构建任务使用编号版本 (projectName-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) }
}
}
此任务必须在本地机器上运行并创建 projectName-LOCAL.jar。他正在做的是。
如何在具有 numbered 版本的另一个任务中实现这一点,特别是对于 GitLab CI\CD?
【问题讨论】:
-
您好,欢迎您。这个问题非常开放,有很多不同的方法可以实现您的要求。不幸的是,这里的成员通常对为你做你的工作不感兴趣。如果您提供您的努力示例,并详细说明您尝试了什么以及为什么它们没有奏效,那么您通常会有更多的运气。我建议考虑制作自己的临时任务。然后分别研究如何扩展任务以继承行为(例如从 Jar 任务类型)。
-
还有一些插件,比如shadow jar插件,它在某些方面需要大量的工作。但是,有效地使用它还需要您了解创建和配置任务的基础知识。我以 shadow 为例,这个插件专门用于创建包含所有依赖项的胖 jar 以独立运行,这可能会也可能不会满足您的需求
标签: java gradle build.gradle