【发布时间】:2015-10-01 23:48:21
【问题描述】:
当 apply plugin: 'java' 在 Gradle 中时,它在其他任务中定义 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 任务本身定义了在其执行期间运行多个任务的方式。还没找到怎么做。
【问题讨论】:
标签: java gradle build.gradle