【问题标题】:Porting from bash to Gradle从 bash 移植到 Gradle
【发布时间】:2015-04-23 10:19:45
【问题描述】:

我有一个项目的 Bash 脚本,看起来像这样:

#!/usr/bin/env bash

curl -LOk (url)/project.zip
mkdir project
unzip project.zip -d project
cp -rf project/assets assets
rm -rf project && rm -rf project.zip
gradle test

所以它所做的就是从另一个项目下载我想要的存档,将其资产复制到当前项目的工作区,删除所述存档和提取的我不想要的东西,然后运行测试套件以确保一切正常在职的。由于我使用 Gradle 运行测试套件,因此我想将所有内容迁移为 100% Gradle,以便构建过程可以 1) 多平台和 2) 易于管理,因为我的构建脚本会不断维护。我该怎么做呢?经过一番研究,我遇到了gradle-download-task;这将有助于处理下载段,还是有更好的选择?

【问题讨论】:

    标签: bash testing build gradle build-automation


    【解决方案1】:

    有3种方法:

    首先(不是跨平台方法)

    直接从 gradle 运行您的脚本(无需在其中运行测试 - 它可以通过 build.gradle 本身的任务依赖项来定义):

    task download1(type: Exec) {
       executable 'sh'
       args 'download.sh'
    }
    

    第二

    使用 groovy + gradle 魔法:

    task download2 << {
       def file = project.file('sample2.zip')   
       def out = new BufferedOutputStream(new FileOutputStream(file))
       out << new URL(zipUrl).openStream()
       out.close()
       project.copy {
          from zipTree(file)
          into 'project2'
       }
       project.copy {
          from project.file('project2/assets')
          into 'assets2'
       }
       project.file('project2').deleteDir()
       project.file('sample2.zip').delete()
    }
    

    第三

    使用你找到的插件:

    task download3(type: Download) {
        def destination = new File(rootDir, 'sample3.zip')
        src zipUrl
        dest destination
        doLast {
          project.copy {
             from zipTree(destination)
             into 'project3'
          }
          project.copy {
             from project.file('project3/assets')
             into 'assets3'
          }
          project.file('project3').deleteDir()
          project.file('sample3.zip').delete()
        }
    }
    

    完整的例子可以在here找到。

    【讨论】:

    • 只是一个简单的问题;我如何从这个脚本中调用 gradle test 命令? test 任务也可以接受一些参数,运行一个简单的commandLine 调用会让Gradle 不高兴。
    • 从命令行运行gradle test。您需要定义测试和下载任务之间的依赖关系。阅读它。
    • 好的,谢谢!还有一个;有没有办法将第二个 project.copy 替换为从目录 a 移动到目录 b 的语句?
    • 不能 100% 确定使用 gradle,但您可以使用 java/groovy 移动文件。
    猜你喜欢
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 2012-06-03
    • 2014-08-23
    • 1970-01-01
    • 2010-11-11
    相关资源
    最近更新 更多