使用脚本执行自定义 Gradle 任务

Posted

技术标签:

【中文标题】使用脚本执行自定义 Gradle 任务【英文标题】:Executing custom Gradle task using scripts 【发布时间】:2021-12-30 05:59:34 【问题描述】:

如何在 build.gradle 中编写将执行此代码的任务:

**gradle hideSecret -Pkey=test123456 -PkeyName=YourSecretKeyName**

我使用这个库:https://github.com/klaxit/hidden-secrets-gradle-plugin 我想在预构建中自动制作 hideSecrets。

像这样的:

task hideSecret 
    doLast 
        exec 
            workingDir "$rootDir"
            commandLine "hideSecret -Pkey=$key -PkeyName=$keyName"
        
    


afterEvaluate 
    tasks.getByName("preBuild").dependsOn("hideSecret")

【问题讨论】:

【参考方案1】:

您不需要重新定义 hideSecret 任务。只需根据需要设置属性并配置依赖项:

afterEvaluate 
    project.ext.key = 'test123456'
    project.ext.keyName = 'YourSecretKeyName'
    tasks.getByName("preBuild").dependsOn("hideTask")

【讨论】:

很好,但是如何使用此命令正确编写任务:hideSecret -Pkey=$key -PkeyName=$keyName?【参考方案2】:

你可以定义一个 Exec 类型的任务

task executeCMD(type:Exec) 
  workingDir '.'
  commandLine 'gradle', 'hideSecret', '-Pkey=test123456', '-PkeyName=YourSecretKeyName'
     doLast 
         println "Executed!"
     
 

或者你可以像这样将它与 gradle project exec 一起使用

 task executeCMD
     doLast 
         exec 
             workingDir "."
             executable 'gradle'
             args 'hideSecret', '-Pkey=test123456'', '-PkeyName=YourSecretKeyName'
         
         println "Executed!"
     
 

更多关于执行的信息可以在gradle official doc找到。

【讨论】:

导致错误:任务失败并出现异常。 ------------ * 出了什么问题:任务':app:executeCMD'的执行失败。 > 启动进程 'command 'build 'test-project'' 时出现问题:原因:error=2,没有这样的文件或目录

以上是关于使用脚本执行自定义 Gradle 任务的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 插件自定义 Gradle 任务 ⑤ ( 为自定义 Gradle 任务添加依赖任务 | Gradle 任务依赖执行顺序控制 )

Android Gradle 插件自定义 Gradle 任务 ⑤ ( 为自定义 Gradle 任务添加依赖任务 | Gradle 任务依赖执行顺序控制 )

Android Gradle 插件自定义 Gradle 任务 ⑧ ( 控制 Gradle 执行任务顺序 | Task#shouldRunAfter 函数 | 三个函数使用场景对比 )

Android Gradle 插件自定义 Gradle 任务 ⑧ ( 控制 Gradle 执行任务顺序 | Task#shouldRunAfter 函数 | 三个函数使用场景对比 )

如何在 build.gradle 中定义和调用自定义方法

Android Gradle 插件自定义 Gradle 任务 ⑥ ( 执行 Gradle 任务的简化版命令 | 同时执行多个 Gradle 任务的命令 )