2016-11-30 89 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项目总是在其余项目之前进行评估,因此您可以在此之前执行“构建之前”逻辑。