2017-04-14 6 views
0

これは私の最初の試みであり、build.gradleファイルでいくつかのタスクを生成しようとしています。Gradleは動的にタスクを生成します

*どこ:

ビルドファイル '/Users/austin/Repositories/test/build.gradle' 行:47

*何が悪かったのか:私のような合併症のエラーに遭遇しています

ルートプロジェクト 'test'の評価中に問題が発生しました。 de.undercouch.gradle.tasks.download.Downloadタイプのタスク 'downloadDriverfirefox'に読み取り専用プロパティ 'src'の値を設定できません。

私はそれがグルーヴィーな言語でちょうど私の経験不足だかなり確信しているが、私は本当に私が間違って行くよどこまでとしていくつかのポインタを使用することができます。

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' 
} 
} 

答えて

0

物事は私が行っている:https://github.com/michel-kraemer/gradle-download-task、私は必ずタスクが正しく使用された をしなければならなかった:

  • あなたがこのプラグインを使用しているので
  • データを保存するためにマップをクリーンアップ
  • タールを持っているので、と同様に使用する必要がありますzipTree

これを試してください:

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* 
+1

、ありがとうございました。 – Austin

関連する問題