[英]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.