gpt4 book ai didi

android - 如何让 android-app-module 识别并使用 gradle-plugin-module 源

转载 作者:行者123 更新时间:2023-12-02 03:51:02 24 4
gpt4 key购买 nike

我创建了一个独立的插件和一个简单的演示应用程序,我需要它来进行开发。两者都作为 app 模块和 plugin 模块添加到同一项目中,以便我可以轻松开发和测试我在插件中编写的功能。我假设如果我将插件的源添加到 buildSrc/build.gradle.kts,我将能够从应用程序引用插件源(我需要它来构建和应用插件)。完整的演示项目可以在这里找到:https://github.com/oizo/gradle-plugin-sample .

目前,当我在 app/build.gradle.kts 中应用该插件时,它似乎可用(自动完成正在工作),但是当我尝试使用 ./gradlew build< 进行构建时 失败并显示以下消息:

FAILURE: Build failed with an exception.

* Where:
Build file '/Users/MyUser/github/gradle-plugin-sample/app/build.gradle.kts' line: 10

* What went wrong:
Script compilation error:

Line 10: apply<io.hvam.android.plugin.StringPlugin>()
^ Unresolved reference: io

显然,我错过了一些东西。

我已经尝试了这篇文章中提出的解决方案-https://stackoverflow.com/a/42263532/1181023 ,这似乎是一个类似的问题,但是当我运行 ./gradlew build --include-build plugin/ 时,它也无法构建,并显示以下内容:

FAILURE: Build failed with an exception.

* What went wrong:
Included build in /Users/MyUser/github/gradle-plugin-sample/plugin has a root project whose name 'plugin' is the same as a project of the main build.

最佳答案

我看到两个问题:

  • 您的插件必须以这样的方式打包:您的Plugin实现类对于插件的使用者来说是可见的,作为入口点。一种简单的方法是使用 gradlePlugin {}堵塞。我建议至少升级到 Gradle 5.5.1并使用build init插件可以为您自动化所有这些。

    请尝试gradle init --type kotlin-gradle-plugin生成插件项目。这将在您的插件 build.gradle 中添加类似于下面的代码这确保您的消费者可以使用 apply plugin: "stringPlugin" 应用该插件.

gradlePlugin {
plugins {
stringPlugin {
id = "stringPlugin"
implementationClass = "com.example.StringPlugin"
}
}
}
  • 其次,您的插件必须对 buildscript 类路径可见,以便它可以应用您的插件。如果您已经将插件发布到maven,那么您可以在项目级别添加以下内容 build.gradle让 gradle 发现您的插件。
buildscript {
...
dependencies {
classpath "com.example:stringplugin"
}
}

开发过程中发布到maven可能不太方便。您可以利用 Gradle 的 composite builds在这方面提供帮助。在您的项目级别settings.gradle ,添加以下内容:

includeBuild('./plugin') {
dependencySubstitution {
substitute module('com.example:stringplugin') with project(':plugin')
}
}

这指示 gradle 使用本地存在的 :plugin模块时com.example:stringplugin被要求。这样方便开发。

关于android - 如何让 android-app-module 识别并使用 gradle-plugin-module 源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58484684/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com