ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Gradle连载4-依赖包打包方式

2022-04-29 09:02:27  阅读:205  来源: 互联网

标签:插件 java 连载 plugin Gradle apply gradle com 打包


一、apply方法的使用

apply plugin:'java'
// 上面是一个短名,下面也有一个完整的名字
apply plugin:org.gradle.api.plugins.JavaPlugin
// 由于org.gradle.api.plugins是默认导入的,所以可以简写为
apply plugin:JavaPlugin

apply from:'version.gradle'
task ex52PrintlnTask {
    println "App版本是:${versionName}, 版本号是:${versionCode}"
}
apply {
    plugin 'java'
    // 该闭包被用来配置一个ObjectConfigurationAction对象,所以你可以在闭包中使用ObjectConfigurationAction
    // 对象的方法、属性等进行配置,
}
// Action的方式:
apply(new Action<ObjectConfigurationAction>() {
    @Override
    void execute(ObjectConfigurationAction objectConfigurationAction) {
        objectConfigurationAction.plugin('java')
    }
})
  • 最后一种方式就是自定义一个action,然后在其execute方法中书写业务逻辑

二、使用第三发插件进行配置

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
        // 这里面就是自定义的第三方插件,在构建项目之前,为项目进行前期相关准备和初始化配置的地方
    }
}
apply plugin: 'com.android.application'

三、plugins DSL方式

plugins {
    id 'java'
}
// plugins DSL是一种新的插件应用方式
  • 使用这种方式和上面还是有一定差异,如果插件已经托管在了https://plugins.gradle.org/上,就可以不用在buildscript中配置classpath的依赖了,直接使用即可
plugins {
 id "org.sonarqube" version "1.2"
}

四、自定义插件

apply plugin: zidingyiPlugin
class zidingyiPlugin implements Plugin<Project> {
    void apply(Project project) {
        project.task('zidingyiPlugin') {
            println "自定义插件"
        }
    }
}
4.1
4.1
  • 下面新建一个Groovy工程,自定义个jar包
package com.example.myapplication;

import org.gradle.rujews.plugin;
import org.


public class CustomPlugin implements Plugin<Project>{
    @Override
    void apply(Project target) {
        target.task("CustomTask") {
            println "自定义插件"
        }
    }
}
  • 插件开发所需要的依赖
apply plugin: 'groovy'

dependencies {
    compile gradleApi()
    compile localGroovy()
}
  • 在src/main/resources/META-INF/gradle-plugins目录下新建一个plugin id的properties文件内容为implementation-class=com.example.myapplication.CustomPlugin
  • 然后再build.gradle中使用
buildscript {
    dependencies {
        classpath file('lib/CustomPlugin')
    }
}

五、Java插件约定的项目结构

  • java工程的默认存放目录: 4.2
apply plugin:'java'

sourceSets {
    custom {

    }
}
// 添加一个custom的源代码集合,然后我们在src下新custom/java,custom/resources目录就可可以
// 存放源代码和资源文件,他们默认的目录结构就是src/sourceSet/java  src/sourceSet/resources

sourceSets {
    main {
        java {
            srcDir 'src/java'
        }
        resources {
            srcDir 'src/resources'
        }
    }
}

六、配置第三方依赖

repositories {
    mavenCentral() // 配置了一个Maven中心库
    maven {
        url 'http://www.mavenurl.com'
    }
}

dependencies {
    compile group: 'com.squareup.okhttp3', name: 'okhttp', version: '3.0.1'
    // 或者简写为complile 'com.squareup.okhttp3:okhttp:3.0.1'
}
  • 配置中心仓的方式,上面是配置了下载地点,下面是配置了要依赖什么组件
// 下面是依赖一个project
dependencies {
    compile project(':exampleCustom')
}
  • 依赖一个project,那么我们的工程中可以随便用这个依赖的工程中的类,就像都在一个工程里面一样。
  • 下面各关键字的解释 4.3
  • 除此之外,gradle还可以给不同的源码指定不同的依赖
dependencies {
    mainCompile 'com.squareup.okhttp3:okhttp:3.0.1'
    vipCompile 'com.squareup.okhttp:okhttp:2.5.0'
}
4.4
4.4

文件依赖

  • 我们把自有的一个jar放到本地,进行锁定依赖
dependencies {
    complie file('libs/jdis.jar', 'libs/nngi.jar')
}

dependencies {
 // 使用文件树的形式,可以把整个目录已经正则表达式引入
    compile fileTree(dir:'libs', includes:'*.jar')
}

七、构建一个Java项目

  • build任务,比如clean,可以清除以前编译生成的文件,如果编译有问题,可以先执行clean,清理
  • assemble任务,该任务不会执行单元测试,只会编译和打包,这个任务在Android里也有,执行它可以打apk包。
  • check任务,只会执行单元测试,不会打jar包
  • javadoc任务,生成我们需要的doc api文档

八、源码

  • gitee路径:https://gitee.com/dongqianrui/AndroidStudioProject/tree/master/Test1
  • CSDN:https://blog.csdn.net/weixin_44630050
  • 博客园:https://www.cnblogs.com/ruigege0000/
  • 欢迎关注微信公众号:傅里叶变换,个人账号,仅用于技术交流 微信公众号二维码

标签:插件,java,连载,plugin,Gradle,apply,gradle,com,打包
来源: https://www.cnblogs.com/ruigege0000/p/16205331.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有