gradle - 在添加存储库并解决依赖关系之前运行任务

标签 gradle

我正在使用 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/

相关文章:

android - 在 Android Studio 0.8.1 上找不到 Artifact 'com.android.tools.build:gradle:0.12.1:gradle.jar'

android-studio - Gradle:一种基于另一种构建类型

java - 如何为Spark Java提供动态数据库配置凭据?

java - 如何使用 Gradle 在 Eclipse 中将文件夹设置为源文件夹?

android - 错误:任务 ':app:transformClassesWithJarMergingForDebug'的执行失败。双重输入

android - 可以构建Android Project(Cmd F9),但由于GSON BEGIN_OBJECT BEGIN_ARRAY问题而导致运行(Ctrl R)错误

android - 如何使用 gradleW 从命令行获取签名的 apk?

gradle - sonarqube-gradle-plugin:为两个级别的子项目派生了错误的基本目录

gradle - 使用junit5自定义构建任务

java - Glassfish 服务器在应找到页面的路径上显示错误 404