2016-11-30 37 views
0

我正在使用gradle編譯python綁定。 有一個plugin by linkedin,這有利於。在添加存儲庫並解決依賴關係之前運行任務

它們還包括一個名爲pivy-importer的項目,該項目將python依賴項轉換爲常青藤資源庫。

我創建了一個gradle插件,它封裝了pivy-importer,因此它可以作爲python任務運行。

我的存儲庫聲明如下:

repositories { 
    pyGradlePyPi() 
    ivy { 
     name 'pypi-local' //optional, but nice 
     url "${project.buildDir.path}/pythonIvy" 
     layout "pattern", { 
      ivy "[organisation]/[module]/[revision]/[module]-[revision].ivy" 
      artifact "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]" 
      m2compatible = true 
     } 
    } 
} 

的問題,然而,就是這個插件執行前的庫被加載。

的蟒蛇任務運行時pinRequirements所以我將我的cusom pythonImporter任務之前,像這樣的第一項任務:

pinRequirements.dependsOn pythonImporter 

然而,即使我這樣做,在控制檯顯示pythonImporter任務之前運行,但只要它嘗試組裝依賴關係,即使它們確實存在於文件系統中,也找不到它們。

但是,如果您再次重新運行該任務,它會通過,因爲第一次運行將存儲庫添加到文件系統。

TL; DR

我需要一種方法來運行一個任務相關使用的是項目的配置repositories加載看了下之前。

回答

0

我將任務執行移至我的buildSrc子項目,並使build任務取決於其執行。 這是可行的,因爲buildSrc項目總是在其餘項目之前進行評估,因此您可以在此之前執行「構建之前」邏輯。