如何找出Gradle上次缓存依赖项的时间

如何找出Gradle上次缓存依赖项的时间,gradle,Gradle,在我的Gradle脚本中,我将JavaCC声明为其自己的自定义“JavaCC”配置中的依赖项。然后,我使用该配置找到javaccjar的路径,并将该路径写入属性文件,该属性文件稍后由Gradle外部的Ant使用 现在,我的build.gradle文件的相关部分如下所示: configurations { javacc } repositories { mavenCentral() } dependencies { javacc group: 'net.java.dev

在我的Gradle脚本中,我将JavaCC声明为其自己的自定义“JavaCC”配置中的依赖项。然后,我使用该配置找到javaccjar的路径,并将该路径写入属性文件,该属性文件稍后由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())
    }
}
配置{
javacc
}
存储库{
mavenCentral()
}
依赖关系{
javacc组:“net.java.dev.javacc”,名称:“javacc”,版本:“5.0”
}
任务cleanBuildHelpers(类型:Delete){
删除“.buildHelpers/ant.properties”
}

任务prepareBuildHelpers(dependsOn:cleanBuildHelpers)正确的解决方案是声明
prepareBuildHelpers
任务的输入和输出。假设您希望在Jar文件的路径名(而不是其内容)更改时重新运行任务:

由于任务编辑现有文件,因此输出声明不太准确,并且在对该文件进行任何外部更改后,任务将重新运行。如果不需要,请尝试使用
outputs.uptdatewhen{true}


注:注意引用文件集合中单个文件的简化方式。

Awesome!我不知道
.singleFile
,也不知道我可以声明这样的东西作为输入。谢谢顺便说一下,我让
preparebuilders
依赖于
cleanbuilders
,这样属性文件在从头生成之前就被删除了。让
preparebuilders
a
Delete
类型的任务更好吗?我不知道您只是生成了一个条目属性文件。您的代码可以工作,但有更简单的解决方案。我不会把
preparebuilders
变成
Delete
任务,因为这不是它的主要目的。如果有的话,我会在
ant.propertyfile
之前插入一个
delete.buildHelpers/ant.properties'
。但我可能会用Groovy而不是Ant来完成这项工作。类似于
文件('.buildHelpers/ant.properties')。withOutputStream{stream->def props=new properties();props['javacc_jar']=configurations.javacc.singleFile.path;props.store(stream,null)}
。这里不需要删除。
task prepareBuildHelpers(dependsOn: cleanBuildHelpers) {
    inputs.property "javaccJarPath", configurations.javacc.singleFile
    outputs.file '.buildHelpers/ant.properties'
    doLast {
        ant.propertyfile(file: '.buildHelpers/ant.properties') {
            entry(key: 'javacc_jar', value: configurations.javacc.singleFile
        }
    }
}