You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 14:42:48