Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

新版依赖插件方式无效,找不到 drouter plugin #65

Closed
lzan13 opened this issue Jan 27, 2024 · 1 comment
Closed

新版依赖插件方式无效,找不到 drouter plugin #65

lzan13 opened this issue Jan 27, 2024 · 1 comment

Comments

@lzan13
Copy link

lzan13 commented Jan 27, 2024

首先感谢各位辛苦开源这么好用的路由框架,之前也用过,挺好有,但是现在我这边在升级gradle 并迁移 kts,同时也使用了Composing builds 管理依赖,然后在引入DRouter插件时出现了问题,找不到相关插件,报错日志在最下方
下边是我自定义插件引入DRouter插件部分代码

    /**
     * 插件入口
     */
    override fun apply(target: Project) {
        // 加载 gradle 配置
        with(target) {
            // 加载插件
            loadPlugin(pluginManager)
            // 加载扩展配置
            loadExtensions(target)
            // 加载依赖
            loadDependencies(target)
        }
    }

    /**
     * 加载插件
     */
    private fun loadPlugin(pluginManager: PluginManager) {
        // 加载插件
        with(pluginManager) {
            apply("com.android.application")
            apply("org.jetbrains.kotlin.android")
            apply("org.jetbrains.kotlin.kapt")
            apply("org.jetbrains.kotlin.plugin.parcelize")

            // DRouter 插件,这里加上之后就会报找不到 com.didi.drouter 
            apply("com.didi.drouter")
        }
    }

下边是引入插件方式,这里参考网上一些方法也不行,在build.gradle下添加也不行

// 这个是在build.gradle.kts下
// 最新添加插件方式
plugins {
    id("com.android.application") version "8.2.1" apply false
    id("com.android.library") version "8.2.1" apply false
    id("org.jetbrains.kotlin.android") version "1.9.22" apply false
    id("org.jetbrains.kotlin.jvm") version "1.9.22" apply false
    // 引入 drouter 插件,不过暂不支持这样
//    id("io.github.didi") version "1.4.0" apply false
}
// 一些未发布到插件中心的插件需要通过下方方式依赖
buildscript {
    dependencies {
        // 这里是用老的方式引入插件
        classpath("io.github.didi:drouter-plugin:1.4.0")
    }
}

也试了官方这种推荐方式

// 这个需要再settings.gradle.kts文件下
resolutionStrategy {
    eachPlugin {
        if (requested.id.namespace == "com.didi.drouter") {
            useModule("io.github.didi:drouter-plugin:1.4.0")
        }
    }
}

请按照以下模板创建新的issue,填写环境,方便快速定位问题

【平台环境】:mac
【Android Studio版本】:Android Studio Hedgehog 2023.1.1 Patch 1
【编译使用Java版本】:jdk17
【kotlin版本】:id("org.jetbrains.kotlin.jvm") version "1.9.22" apply false
【gradle-plugin版本】:8.2.1
【gradle-wrapper版本】:gradle-8.2-bin.zip
【drouter版本】:drouter-api:2.4.0
【复现步骤】:
【期望结果】:能正常加载drouter plugin
【日志】:

Build file '/Users/edy/Develop/Workspace/Android/VMLibrary/example/build.gradle.kts' line: 1
An exception occurred applying plugin request [id: 'com.vmloft.develop.plugin.config.application']
> Failed to apply plugin 'com.vmloft.develop.plugin.config.application'.
   > Plugin with id 'com.didi.drouter' not found.
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
BUILD FAILED in 7s
5 actionable tasks: 3 executed, 2 up-to-date
@lzan13
Copy link
Author

lzan13 commented Jan 27, 2024

找到问题了,插件不能在自定义插件里边引入,必须写到项目的build.gradle.kts就ok了,引用方式如下

plugins {
    // 自定义配置插件,用来统一管理配置和依赖
    id("com.vmloft.develop.plugin.config.application")
    // DRouter 插件,暂时必须在这里引用
    id("com.didi.drouter")
}
// 一些未发布到插件中心的插件需要通过下方方式依赖
buildscript {
    dependencies {
        classpath("io.github.didi:drouter-plugin:1.4.0")
    }
}

@lzan13 lzan13 closed this as completed Jan 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant