修改现有 gradle 任务
Modify an existing gradle task
当apply plugin: 'java'
在Gradle时,它定义了其他任务processResources
。
我想在 processResources
期间替换其中一个资源文件中的 token/parameter。
我在 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
}
}
None 其中有效。所以,如果 运行 gradle -q clean processResources
资源被复制,但令牌没有被替换。
我不想在 运行 构建时明确地强制 run/add initConfig
,所以理想情况下 gradle -q build
应该做所有必要的事情。
我相信这是可能的,因为 build
任务本身定义了在执行期间 运行 多个任务的方式。还没找到方法。
ProcessResources 是 java-plugin 提供的任务,您不需要添加 << 来修改它的行为。
只需尝试:
processResources{
//same Code goes here
}
另一种解决方法是在 processResources 和 initConfig 之间添加依赖关系,如下所示:
processResources{
dependsOn initConfig
}
这将在 processResources 之前执行 initConfig。
希望对您有所帮助。
processResources
是(您可以在 docs 中查看)类型 Copy
的普通任务。因此,您可以按照与配置其他复制任务完全相同的方式对其进行配置。这足以过滤文件:
import org.apache.tools.ant.filters.ReplaceTokens
apply plugin: 'java'
processResources {
filter(ReplaceTokens, tokens: ['token.to.replace': 'zombo.com'])
}
Here你可以找到一个简单的演示。
当apply plugin: 'java'
在Gradle时,它定义了其他任务processResources
。
我想在 processResources
期间替换其中一个资源文件中的 token/parameter。
我在 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
}
}
None 其中有效。所以,如果 运行 gradle -q clean processResources
资源被复制,但令牌没有被替换。
我不想在 运行 构建时明确地强制 run/add initConfig
,所以理想情况下 gradle -q build
应该做所有必要的事情。
我相信这是可能的,因为 build
任务本身定义了在执行期间 运行 多个任务的方式。还没找到方法。
ProcessResources 是 java-plugin 提供的任务,您不需要添加 << 来修改它的行为。 只需尝试:
processResources{
//same Code goes here
}
另一种解决方法是在 processResources 和 initConfig 之间添加依赖关系,如下所示:
processResources{
dependsOn initConfig
}
这将在 processResources 之前执行 initConfig。
希望对您有所帮助。
processResources
是(您可以在 docs 中查看)类型 Copy
的普通任务。因此,您可以按照与配置其他复制任务完全相同的方式对其进行配置。这足以过滤文件:
import org.apache.tools.ant.filters.ReplaceTokens
apply plugin: 'java'
processResources {
filter(ReplaceTokens, tokens: ['token.to.replace': 'zombo.com'])
}
Here你可以找到一个简单的演示。