【问题标题】:Gradle Dynamically Generate TasksGradle 动态生成任务
【发布时间】:2017-04-14 14:28:07
【问题描述】:

这是我第一次尝试使用 clojure,我正在尝试在我的 build.gradle 文件中生成一些任务。我遇到了复杂的错误,例如:

* 地点:

构建文件'/Users/austin/Repositories/test/build.gradle' 行:47

* 出了什么问题:

评估根项目“测试”时出现问题。 无法为 de.undercouch.gradle.tasks.download.Download 类型的任务 ':downloadDriverfirefox' 设置只读属性 'src' 的值。

我相当肯定这只是我对 groovy 语言的经验不足,但我真的可以使用一些指针来判断我哪里出错了。

ext {
// The drivers we want to use
drivers = ["firefox", "chrome"]

driversSrc = [:]
driversSrc['firefox'] = 'https://github.com/mozilla/geckodriver/releases/download/v0.15.0/geckodriver-v0.15.0-macos.tar.gz'
driversSrc['chrome'] = 'https://chromedriver.storage.googleapis.com/2.29/chromedriver_mac64.zip'

driverDest = new File("${buildDir}/webdrivers")
}

import org.gradle.api.tasks.*
import de.undercouch.gradle.tasks.download.Download

driversSrc.each { driver, path ->
tasks.create(name: 'downloadDriver'+"${driver}", type: Download) {
    src = path
    dest ext.driverDest
    overwrite true
}
}

driversSrc.each {driver ->
tasks.create(name: 'unzipDriver'+"${driver}", dependsOn: 'downloadDriver'+"${driver}", type: Copy) {
    from zipTree(file('downloadDriver'+"${driver}").dest)
    into buildDir/'webdrivers'
}
}

【问题讨论】:

    标签: gradle


    【解决方案1】:

    我做过的事情:

    请试试这个:

    buildscript {
      repositories {
        jcenter()
      }
    
      dependencies {
        classpath "de.undercouch:gradle-download-task:3.2.0"
      }
    }
    
    allprojects {
      repositories {
        jcenter()
      }
    }
    import de.undercouch.gradle.tasks.download.Download
    
    apply plugin: "de.undercouch.download"
    
    ext {
      driversSrc = [
              "firefox": "https://github.com/mozilla/geckodriver/releases/download/v0.15.0/geckodriver-v0.15.0-macos.tar.gz",
              "chrome" : "https://chromedriver.storage.googleapis.com/2.29/chromedriver_mac64.zip"
      ]
      driverDest = "${buildDir}/webdrivers"
    }
    
    driversSrc.each { driver, path ->
      def fileDest = new File(driverDest, new File(path).getName())
    
      tasks.create(name: "downloadDriver${driver}", type: Download) {
        src path
        dest fileDest
        overwrite true
      }
    
      tasks.create(name: "unzipDriver${driver}", dependsOn: "downloadDriver${driver}", type: Copy) {
        from path.endsWith("zip") ? zipTree(file(fileDest)) : tarTree(file(fileDest))
        into driverDest
      }
    }
    

    运行任务:

    ./gradlew unzipDriverfirefox unzipDriverchrome*
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-30
      相关资源
      最近更新 更多