添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

参考 【Android Gradle 插件】自定义 Gradle 插件模块 ④ ( META-INF 中声明自定义插件的核心类 | 在应用中依赖本地 Maven 仓库中的自定义 Gradle 插件 ) 系列博客 , 自定义 Gradle 插件 ;

import org.gradle.api.Plugin
import org.gradle.api.Project
class Plugin4 implements Plugin<Project> {
    @Override
    void apply(Project project) {
        println 'Plugin4'

定义完成后 , 将插件上传到本地 Maven 仓库中 , 发布配置如下 :

// 指定自定义 Gradle 插件的分组
group 'kim.hsl.plugin'
// 指定自定义 Gradle 插件的版本号
version '0.1'
// 自定义 Gradle 插件的名称 , 默认为工程名
// 也可以在 publishing / publications 脚本块中 自己指定
// 用于将 插件上传到 远程仓库 或者 本地仓库 中
apply plugin: 'maven-publish'
// 发布到 远程/本地仓库 相关配置
publishing {
    publications {
        // plugin 函数是随意命名的函数
        plugin(MavenPublication) {
            // 配置上传内容
            // components.java 是打包的 jar 包
            from components.java
            // 指定自定义 Gradle 插件名称
            artifactId 'plugin'

之后在应用中 , 引入本地 Maven 仓库 , 并添加该自定义插件的依赖 ;

buildscript {
    repositories {
        mavenLocal()    // 依赖本地 Maven 仓库
    dependencies {
        classpath "kim.hsl.plugin:plugin:0.1" // 依赖本地 Maven 仓库下的插件

最终在执行 apply plugin: 'kim.hsl.plugin' 代码时 , 报错 ;

报错信息如下 :

FAILURE: Build completed with 2 failures.
1: Task failed with an exception.
-----------
* Where:
Build file 'D:\002_Project\002_Android_Learn\Android_UI\app\build.gradle' line: 15
* What went wrong:
A problem occurred evaluating project ':app'.
> Could not find implementation class 'kim.hsl.plugin.Plugin4' for plugin 'kim.hsl.plugin' specified in jar:file:/C:/Users/octop/.gradle/caches/jars-8/e398a38a1f5565d019651add920bb7ec/plugin-0.1.jar!/META-INF/gradle-plugins/kim.hsl.plugin.properties.
* 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.
==============================================================================
2: Task failed with an exception.
-----------
* What went wrong:
A problem occurred configuring project ':app'.
> com.android.builder.errors.EvalIssueException: compileSdkVersion is not specified. Please add it to build.gradle
* 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
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.7.1/userguide/command_line_interface.html#sec:command_line_warnings
BUILD FAILED in 567ms

查看 " C:\Users\octop.m2\repository\kim\hsl\plugin\plugin " 目录下的插件信息 ;

在这里插入图片描述
打开 jar 包 , 发现 Plugin4 插件没有包名 , 直接在根目录存放 , 如果有包名的话 , 会存放在 " kim/hsl/plugin " 目录中 ;

上述原因是在 groovy 代码中没有写包名 , 在 groovy 代码文件中不会自动添加包名 , 需要手动添加 ;

修改完成后的代码 :

package kim.hsl.plugin
import org.gradle.api.Plugin
import org.gradle.api.Project
class Plugin4 implements Plugin<Project> {
    @Override
    void apply(Project project) {
        println 'Plugin4'

再次执行 publishPluginPublicationToMavenLocal 任务 , 将插件上传到本地 Maven 仓库 ;
在这里插入图片描述

此时 , 发现自定义插件 Plugin4 被定义在了 kim\hsl\plugin\ 目录下 ;
在这里插入图片描述
再次编译应用 , 编译成功 ;

【错误记录】自定义 Gradle 插件报错 ( Could not find implementation class x for plugin x specified in jar:file ) Could not find implementation class 'kim.hsl.plugin.Plugin4' for plugin 'kim.hsl.plugin' specified in jar:file:/C:/Users/octop/.gradle/caches/jars-8/e398a38a1f5565d019651add920bb7ec/plugin-0.1.jar!/META-INF/gradle-plugins/kim.hsl.plugin.properties.
今天继续来记录我的学习博客,今天呢又是我的一个同学遇到了我从来没遇到的一个问题,那就是她在安装androidstudio软件的时候系统报出了这样一个错误: Could not find method clean() for arguments [{type=class org.gradle.api.tasks.Delete}, build_458py9op120bi768cfxm5xc2wrunclosure1_run_closure1r​unc​losure1_closure4@7daf132f] on object of type org.gradle.api.internal.initi
在网上搜罗了好多解决Gradle sync failed: Cause: org/gradle/api/...的方法,但是都没能解决我的问题,后来想到是否跟gradle的版本有关,果不其然下载了最新的gradle版本之后为题解决了! 具体操作: 我目前的版本Android Studio 2.3 Bet 1,之前使用的gradle版本为gradle-2.14.1,更换成最新的gradle-3.3
当你使用的Gradle版本是2.4以上,Android插件版本是1.3.0以上的时候就会出现这个问题,这时候你只需将android-maven-gradle-plugin插件版本改为classpath ‘com.github.dcendents:android-maven-gradle-plugin:1.3’即可 我则是把该引用库的build.gradle 中的apply plugin: ‘
Gradle其它模块 一、Settings类 settings.gradle(对应Settings.java)决定哪些工程需要被gradle处理,占用了整个gradle生命周期的三分之一,即Initialzation初始化阶段。 二、SourceSet类 对默认的文件位置进行修改,从而让gradle知道哪种资源要从哪些文件夹中去查找。 // sourceSets是可以调用多次的 android {...
这个错误提示表示在你的Gradle项目中找不到名为"spring-boot-starter-websocket"的依赖项。解决这个问题的方法是在你的build.gradle文件中添加以下依赖项: dependencies { //其他依赖项 implementation 'org.springframework.boot:spring-boot-starter-websocket' 然后重新运行gradle test命令即可。如果还有其他缺少的依赖项,也需要在build.gradle文件中添加相应的依赖项。