2017-04-14 3 views
0

이것은 clojure를 사용한 첫 번째 시도이며 build.gradle 파일에서 일부 작업을 생성하려고 시도하고 있습니다. 나는 같은 합병증 오류가 발생 해요 :Gradle 동적으로 작업 생성

을 * 장소 :

빌드 파일 '/Users/austin/Repositories/test/build.gradle'라인 : 47

* 잘못된 무엇 :

루트 프로젝트 '테스트'를 평가하는 동안 문제가 발생했습니다. 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