自定义Gradle任务已声明@InputDirectory但输入未变更仍每次执行的问题求助
自定义Gradle任务已声明@InputDirectory但输入未变更仍每次执行的问题求助
我在项目的buildSrc里用Java写了一个本地自定义Gradle任务,代码如下:
public class ImageMergerTask extends DefaultTask{ public File directory; @TaskAction public void greet() { System.out.println("hello from ImageMergerTask " + directory.toString()); } @InputDirectory public File getDirectory(){ return directory; } public void setDirectory(File directory){ this.directory = directory; } }
之后我在build.gradle里这样配置使用这个任务:
task imageMerger(type : ImageMergerTask) { directory file('src/main/resources/someFolder') } processResources.dependsOn(imageMerger);
我原本以为,给getDirectory()方法加上@InputDirectory注解后,Gradle应该只会在src/main/resources/someFolder目录的内容发生变化时才执行这个任务,但实际情况是每次构建它都会运行,控制台每次都会输出:
Task :imageMerger
hello from ImageMergerTask C:\Users\richa\Documents\Development\starlight\src\main\resources\someFolder
想请教一下,自定义任务该怎么正确声明输入,才能让Gradle的最新状态检测(up-to-date detection)正常生效呢?
备注:内容来源于stack exchange,提问作者Richard Tingle
相关产品推荐
相关产品推荐

