在我的 Gradle 脚本中,我将 JavaCC 声明为它自己的自定义“javacc”配置中的依赖项。然后,我使用该配置找出 JavaCC JAR 的路径并将该路径写入属性文件,该文件稍后在 Gradle 之外由 Ant 使用。
现在,我build.gradle
文件的相关部分如下所示:
configurations {
javacc
}
repositories {
mavenCentral()
}
dependencies {
javacc group: 'net.java.dev.javacc', name: 'javacc', version: '5.0'
}
task cleanBuildHelpers(type: Delete) {
delete '.buildHelpers/ant.properties'
}
task prepareBuildHelpers(dependsOn: cleanBuildHelpers) << {
ant.propertyfile(file: '.buildHelpers/ant.properties') {
entry(key: 'javacc_jar', value: configurations.javacc.files.iterator().next())
}
}
这就像我想要的那样工作,我可以这样离开它。但是,prepareBuildHelpers
每当我运行依赖于它的其他任务时,该任务总是会执行。这没什么大不了的,但我想知道是否有办法让它只在 Gradle 更新 JavaCC JAR 时运行。
我正在考虑检查 JAR 的时间戳并将其与属性文件的时间戳进行比较,但我不知道这是否是正确的方法以及是否有更好、更优雅的方法来执行此操作。
有什么想法或建议吗?