我正在使用 gradle 编译 python 绑定(bind)。
有一个plugin by linkedin这有助于实现这一点。
它们还包括一个名为 pivy-importer 的项目,该项目将 python 依赖项转换为 ivy 存储库。
我创建了一个包装 pivy-importer 的 gradle 插件,以便它可以作为 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
}
}
}
然而,问题是在插件执行之前正在加载存储库。
python任务运行的第一个任务是
pinRequirements
所以我添加了我的自定义 pythonImporter
之前的任务是这样的:pinRequirements.dependsOn pythonImporter
但是,即使我这样做,控制台也会显示
pythonImporter
任务之前正在运行,但是一旦它尝试组装依赖项,即使它们确实存在于文件系统中,它也找不到它们。但是,如果您再次重新运行该任务,它会通过,因为第一次运行会将存储库添加到文件系统中。
TL;DR
在使用项目配置的
repositories
查找依赖项之前,我需要一种方法来运行任务已加载。
最佳答案
我将任务执行移至我的 buildSrc
子项目并制作了build
任务取决于它的执行。
这是因为 buildSrc
项目总是在其他项目之前进行评估,因此您可以在那里执行“构建之前”逻辑。
关于gradle - 在添加存储库并解决依赖关系之前运行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40897232/