强制JavaExec任务为最新版本

时间:2018-10-30 13:01:10

标签: java gradle build.gradle

我有一个自定义的Gradle任务(扩展了JavaExec),该任务应该使用增量构建来避免大部分时间执行:

task printFoo(type: JavaExec) {
    inputs.dir ...
    outputs.upToDateWhen( { return true } );

    classpath = sourceSets.main.runtimeClasspath
    main = "mypackage.MyMain"
}

乍一看,它可以正常工作:当我运行两次任务时,它只运行一次。如果我编辑一些输入文件,它将重新运行。

问题是:每当我在源代码中更改任何内容时,它都会重新运行。这是有道理的,因为JavaExec将我的所有源文件都作为输入,因为不同的程序可能会做不同的事情。但是,由于这是一个非常大的项目,因此源代码中的大多数更改都不会改变此任务的结果。因此,如果代码中发生了某些更改,我不想重新运行它(也许是主类除外,但是它不会很快更改,因此这是可选的)。

有没有办法实现这种行为?我尝试从inputs中删除文件,但是显然在我的代码之后它们已初始化。我还考虑过将这项任务放到buildSrc中,但这对MyMain对项目其余部分的依赖性产生了丑陋的影响。

0 个答案:

没有答案