在Gradle中使用apply plugin: 'java'
时,它除了定义其他任务外还定义了processResources
任务。我想在processResources
期间替换一个资源文件中的标记/参数。我在我的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
任务本身定义了在其执行期间运行多个任务的方式。但我还没有找到如何做到。