IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> IntelliJ IDEA-Gradle教学 -> 正文阅读

[Java知识库]IntelliJ IDEA-Gradle教学

官方文档

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文件删除 (注意备份)然后重新创建项目就好了

在这里插入图片描述

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

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-02 13:25:12  更:2022-05-02 13:25:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:38:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码