gua*_*uai 1 groovy build gradle mirah
在任务的配置阶段,我将一些目录注册为builtBy: thisTask。我希望gradle能够自动检测源是否已更改,但是任务总是在执行。
这是任务:
subprojects {
def srcMainMirah = file('src/main/mirah')
if (srcMainMirah.exists()) {
idea.module.sourceDirs += srcMainMirah
task compileMirah {
def classesMirahMain = file("$buildDir/classes-mirah/main")
inputs.sourceDir srcMainMirah
def thisTask = delegate
sourceSets.main {
output.dir(classesMirahMain, builtBy: thisTask)
java.srcDir srcMainMirah
}
dependsOn tasks.compileJava
doFirst {
def classpath = files("$buildDir/classes/main").plus(configurations.compile)
mirahc(srcMainMirah, classesMirahMain, classpath)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它用于以mirah语言编译源代码,*.class就像Java编译器一样生成文件。
仅声明任务的输入不足以确定任务是否是最新的。您还必须声明task.outputs
没有定义输出的任务将永远不会被认为是最新的。对于任务输出不是文件的方案,或更复杂的方案,
TaskOutputs.upToDateWhen()如果应将任务输出视为最新的,则该方法允许您以编程方式计算。如果自上次构建以来未更改任何输出,则仅定义了输出的任务将被视为最新。
| 归档时间: |
|
| 查看次数: |
529 次 |
| 最近记录: |