如何找出Gradle上次缓存依赖项的时间
在我的Gradle脚本中,我将JavaCC声明为其自己的自定义“JavaCC”配置中的依赖项。然后,我使用该配置找到javaccjar的路径,并将该路径写入属性文件,该属性文件稍后由Gradle外部的Ant使用 现在,我的如何找出Gradle上次缓存依赖项的时间,gradle,Gradle,在我的Gradle脚本中,我将JavaCC声明为其自己的自定义“JavaCC”配置中的依赖项。然后,我使用该配置找到javaccjar的路径,并将该路径写入属性文件,该属性文件稍后由Gradle外部的Ant使用 现在,我的build.gradle文件的相关部分如下所示: configurations { javacc } repositories { mavenCentral() } dependencies { javacc group: 'net.java.dev
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
aDelete
类型的任务更好吗?我不知道您只是生成了一个条目属性文件。您的代码可以工作,但有更简单的解决方案。我不会把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
}
}
}