IntelliJ IDEA-Gradle教学

x33g5p2x  于2022-05-05 转载在 其他  
字(3.2k)|赞(0)|评价(0)|浏览(451)

官方文档

https://docs.gradle.org/current/userguide/userguide.html

概念

Gradle安装

android编译工具,最初有直接用makefile编译的,后来也有使用ant编译的,不过目前大家几乎都使用gradle作为编译工具了。

ant,使用xml配置来编译工程,xml不够灵活,程序员当然觉得写代码控制编译流程最灵活,而不是写配置文件,比如要条件判断,ant就有点别扭。

makefile能够进行一系列有限度的编码,但无法灵活管理第三方库,比如要引用glide,makefile就不适合了。

所以gradle是目前的主流,它使用groovy语言,groovy文件会被编译成class文件,groovy本质上也是java,gradle通过编程的方式,能更灵活地控制编译过程,方便自定义,也可以很方便地引入第三方库,基于这些原因,gradle自然就是android工程构建的倚天剑了

gradle中有几个重要的概念,先了解下:

project,一个gradle.build文件就对应着一个projecttask,project包含了多个task,task中又会有多个action,比如doLast、doFirst等,执行task,就是执行其中的actionplugin,plugin中定义了相应动作,在构建时会自动地执行其中的动作。可以理解为plugin中定义了相应个task,构建的时候一定会执行plugin中的taskextension,主工程中gradle文件里添加的android{}语句块就是一个extension,设置相应属性,供plugin读取使用

在编译过程中, Gradle 会根据 build 相关文件,聚合所有的project和task,执行task 中的 action。因为 build.gradle文件中的task非常多,先执行哪个后执行那个需要一种逻辑来保证。这种逻辑就是依赖逻辑,几乎所有的Task 都需要依赖其他 task 来执行,没有被依赖的task 会首先被执行。所以到最后所有的 Task 会构成一个 有向无环图(DAG Directed Acyclic Graph)的数据结构。

编译过程分为三个阶段:

  1. 初始化阶段,创建project对象
  2. 配置阶段,执行所有的gradle脚本,创建所有task,所有task的配置代码会在这个阶段执行
  3. 执行阶段,执行task

我所了解的就是,安卓应用和需要自己管理jar包的应用,以及在打包的时候做一些特殊的处理等,除此之外大部分都还是使用Maven

下载地址

https://gradle.org/

环境变量配置

将下载下来的压缩包解压,这里以d盘为例,解压之后的路径为D:\gradle-7.3-bin\gradle-7.3,打开windows设置,搜索系统环境变量

添加GRADLE_HOME填写完毕后点击确定


选中path,点击编辑


点击新建

输入%GRADLE_HOME%\bin


然后一直确定即可

验证是否安装成功

打开cmd,输入gradle -v,输出如下内容则说明安装成功

Gradle配置

指定Gradle依赖下载位置

配置之后Gradle会将依赖包默认下载到该目录,在环境变量新建一个系统环境变量,注意变量名必须为GRADLE_USER_HOME,目录最好不要有中文和特殊符号

配置Gradle查找jar包优先级

在Gradle解压缩的文件夹中找到init.d文件夹,在init.d目录下新建一个init.gradle文件,内容如下

allprojects {
    repositories {
        maven { url 'file:E:\\gradleRepo'}
        mavenLocal()
        maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
        mavenCentral()
    }
}

allprojects里是项目本身需要的依赖。表示项目里面每个build.gradle 里面的库都会依赖用这些仓库。这里配置了四个仓库,表示先会去E盘的gradleRepo目录下找,没找到就去本地Maven仓库找,还没有就去阿里云的仓库找,最后就去Maven的中心仓库找。

注意: mavenLocal去找的本地的maven仓库地址是C:\USER_HOME\.m2/settings.xml 没有可以自己创建 ,把自己Maven配置文件复制一份在这里就行

IDEA创建Gradle工程

创建Gradle项目和配置

打开IDEA,选择file->new


配置工程

选择本地的Gradle,以及Gradle的仓库,然后点击apply,ok

完成后目录结构如下:


然后我们创建一个gradle.demo 包在创建一个GradleDemo类,添加一个main方法

添加依赖

然后我们修改build.gradle,在dependencies中增加
implementation ‘com.alibaba:fastjson:1.2.73’

修改之后我们点击刷新,就会自动导入对应的依赖到项目里

注意:低版本的Gradle需要将implementation替换成compile

完整的build.gradle

plugins {
    id 'java'
}

group 'org.example'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
    implementation 'com.alibaba:fastjson:1.2.73'
}

test {
    useJUnitPlatform()
}

编辑GradleDemo.java,这里我们只是输出一下json字符串验证下工程

package gradle.demo;

public class GradleDemo {
    public static void main(String[] args) {
        Map<String,Object> map = new HashMap<>();
        map.put("name","张三");
        map.put("age",14);
        String jsonString = JSONObject.toJSONString(map);
        System.out.println(jsonString);
    }
}

运行结果如下:

打包成可运行的jar包

编辑build.gradle,添加打包插件

jar{
    manifest{
//         这个必须填写主入口类,也就是有Main方法的类
        attributes 'Main-Class': 'gradle.demo.GradleDemo'
    }
    from{
        configurations.runtimeClasspath.collect  {
            it.isDirectory() ? it : zipTree(it)
        }
    }
}

然后在根目录执行命令 gradle jar就在build/libs目录得到一个可以运行的jar包

报错解决

Java home is different.Expecting: but was: ‘jre‘.Please configure the JDK to match the expected one
解决办法: 在你自己的JDK\JRE\lib中把tools.jar文件删除 (注意备份)然后重新创建项目就好了

点赞 -收藏-关注-便于以后复习和收到最新内容有其他问题在评论区讨论-或者私信我-收到会在第一时间回复如有侵权,请私信联系我感谢,配合,希望我的努力对你有帮助^_^

相关文章