gpt4 book ai didi

gradle - 在 nebula/gradle 中,如何将正在发布的版本注入(inject)正在发布的 jar 中?

转载 作者:行者123 更新时间:2023-12-03 05:05:46 25 4
gpt4 key购买 nike

我们有一个从命令行运行的工具。命令之一是-version。

在我们转换为 nebula 发布插件之前,版本位于 gradle.properties 文件中,作为构建的一部分,我们将其从那里复制到 src/main/resources/version.txt 文件中,该文件后来被工具读取输出版本。

但是现在该版本永远不会在 checkin git 的文件中。相反,它只有在星云释放过程中才知道。

我们想在 nebula 发布过程中获取那个版本,并注入(inject)到 nebula 即将发布的 jar 中。例如,它可以添加到 list 中。

我们试图弄清楚如何做到这一点,但在网上看不到任何示例,文档中也没有任何相关内容。

最佳答案

只需创建一个缓存 Nebula 动态推断的版本的任务。

由于您最初复制/创建 src/main/resources/version.txt ,我们将使用那个模型我们的任务。

假设一个简单/标准的 Java 项目,使用 Kotlin DSL :

val cacheNebulaVersion by tasks.registering {
mustRunAfter(tasks.named("release"))
doLast {
val sourceSets = project.extensions.getByName("sourceSets") as SourceSetContainer
sourceSets.getByName(SourceSet.MAIN_SOURCE_SET_NAME).output.resourcesDir?.let {

// If there are not existing resources in your project then you must create
// the resources dir otherwise a FileNotFoundException will be thrown.
if (!it.exists()) {
it.mkdirs()
}

File(it, "version.txt").printWriter().use { out ->
out.println(project.version)
}
}
}
}

当我调用 ./gradlew clean build snapshot cacheNebulaVersion , Nebula 产生的版本被缓存/创建在 src/main/resources/version.txt构建 输出。上面的任务 将它与 jar 捆绑在一起。

希望这能让你知道该怎么做。

enter image description here

关于gradle - 在 nebula/gradle 中,如何将正在发布的版本注入(inject)正在发布的 jar 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59228920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com