Gradle: 在构建中包含动态生成的文件?

Gradle: Include dynamically generated file in build?

在我的 gradle 构建过程中,我生成了一个临时 buildinfo.properties 文件,其中包含 Git 提交信息、构建时间等内容。我想在我的输出中包含此文件*.jar / *.war 文件作为资源。但是,我 不想 将这个文件放在我的项目 src/ 文件夹中(这需要摆弄 .gitignore 并且通常对我来说似乎没有必要) .理想情况下,开发人员根本不应该看到这个文件,它应该只包含在输出存档中。

如何在 Gradle 构建中包含动态生成的文本文件?

将该文件添加到 jar 任务 (Kotlin DSL) 中:

tasks {
    val jar by getting(Jar::class) {
        from("build/buildinfo.properties")
    }
}

它会将 build/buildinfo.properties 文件(假设您使用另一个任务在那里生成它)添加到 JAR 的根目录。

对于动态生成的文件,标准 gradle 处理资源的方法是 gradle 名为 processResources 的任务。你可以这样做:

processResources {
      dependsOn taskThatGeneratesYourBuildinfo
      from("build/buildinfo.properties") {
          into("desired/path/in/jar")
      }
}