[英]Modify an existing gradle task
在Gradle中apply plugin: 'java'
时,它定义了其他任务processResources
。 我想在processResources
期间替换其中一个资源文件中的token /参数。 我在build.gradle
定义了以下复制任务:
import org.apache.tools.ant.filters.ReplaceTokens
task initConfig(type: Copy) {
from("src/resources/assets/js") {
include 'config.js'
filter(ReplaceTokens, tokens: [host: "${System.env.HOST ?: 'localhost:58080'}" as String])
}
into "$sourceSets.main.output.resourcesDir/assets/js"
}
如果我运行gradle -q run initConfig
它工作正常。 我想要的是这个任务作为processResources
任务的一部分运行,我试图将相同的逻辑如下:
processResources << {
// same code goes here
}
要么
processResources {
doLast {
// same code goes here
}
}
它们都不起作用。 因此,如果运行gradle -q clean processResources
资源被复制,但令牌不会被替换。
我不想在运行构建时强制显式运行/添加initConfig
,所以理想情况下gradle -q build
应该做所有必要的事情。
我相信这是可能的,因为build
任务本身定义了在执行期间运行多个任务的方式。 找不到怎么样。
ProcessResources是java-plugin提供的任务,你不需要添加<<来修改它的行为。 只需尝试:
processResources{
//same Code goes here
}
另一种解决方法可能是在processResources和initConfig之间添加一个依赖关系,如下所示:
processResources{
dependsOn initConfig
}
这将在processResources之前执行initConfig。
希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.