【发布时间】:2017-08-11 05:45:58
【问题描述】:
我有一个在 Windows 10 上成功运行的多项目 Gradle 构建脚本。它读取并更新位于项目管理目录之外的 Version.properties 文件。
所有文件操作都是使用 Gradle/groovy 完成的。在读取、递增和重写版本文件后,它将被复制到 build/classes 目录中,随后的 jar 和 shadowjar 任务将在该目录中获取它。
如果我按以下方式调用 gradle,一切都会像宣传的那样工作:
gradle build shadowjar ... etc.
但是,如果我在构建之前调用 clean 任务,则会正确读取和递增文件,但文件副本会静默失败。
使用的命令是:
gradle clean build shadowjar
我怀疑 gradle 在开始构建任务之前不会等待清理任务完成。该文件被读取并递增,但同时,多项目清理活动尚未完成。我尝试了依赖项{} 块、doFirst{} 和 doLast{} 的变体,以尝试在构建过程中进一步将文件副本推回。我的主要要求是在执行 jar 或 shadowjar 任务之前准备好 Version.properties 文件。我怀疑尝试写入 gradle 的 build/ 目录,因为在 gradle 执行其活动时,可能无法将任何内容放入 build 目录中。有没有办法确保 Version.properties 文件(或任何生成的文件)被复制?或者是否有另一个我可以使用的位置在干净的时候不会被 gradle 吹走,但仍然会在 build:jar / build:shadowjar 中被拾取?
【问题讨论】:
-
您是否使用并行执行(
--parallel或org.gradle.parallel=true)?您使用的是哪个版本的 Gradle? -
gradle -version 返回 Gradle 3.3 和 Groovy 2.4.7。我没有在 build.gradle 脚本中的任何地方启用 --parallel。