aka*_*lou 7 java gradle build.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"
}
Run Code Online (Sandbox Code Playgroud)
如果我运行它工作正常gradle -q run initConfig。我想要的是这个任务作为processResources任务的一部分运行,我试图把相同的逻辑如下:
processResources << {
// same code goes here
}
Run Code Online (Sandbox Code Playgroud)
或者
processResources {
doLast {
// same code goes here
}
}
Run Code Online (Sandbox Code Playgroud)
它们都不起作用。所以,如果运行gradle -q clean processResources资源被复制,但令牌没有被替换。
我不想initConfig在运行构建时强制显式运行/添加,所以理想情况下gradle -q build应该做所有必要的事情。
我相信这是可能的,因为build任务本身定义了在执行期间运行多个任务的方式。还没有找到如何。
processResources是(您可以在文档中查看)类型的简单任务Copy。因此,您可以按照与配置其他复制任务相同的方式对其进行配置。这足以过滤文件:
import org.apache.tools.ant.filters.ReplaceTokens
apply plugin: 'java'
processResources {
filter(ReplaceTokens, tokens: ['token.to.replace': 'zombo.com'])
}
Run Code Online (Sandbox Code Playgroud)
在这里您可以找到一个简单的演示。
| 归档时间: |
|
| 查看次数: |
7021 次 |
| 最近记录: |