IntelliJ IDEA-Gradle教学

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

官方文档

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文件,内容如下

  1. allprojects {
  2. repositories {
  3. maven { url 'file:E:\\gradleRepo'}
  4. mavenLocal()
  5. maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
  6. mavenCentral()
  7. }
  8. }

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

  1. plugins {
  2. id 'java'
  3. }
  4. group 'org.example'
  5. version '1.0-SNAPSHOT'
  6. repositories {
  7. mavenCentral()
  8. }
  9. dependencies {
  10. testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
  11. testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
  12. implementation 'com.alibaba:fastjson:1.2.73'
  13. }
  14. test {
  15. useJUnitPlatform()
  16. }

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

  1. package gradle.demo;
  2. public class GradleDemo {
  3. public static void main(String[] args) {
  4. Map<String,Object> map = new HashMap<>();
  5. map.put("name","张三");
  6. map.put("age",14);
  7. String jsonString = JSONObject.toJSONString(map);
  8. System.out.println(jsonString);
  9. }
  10. }

运行结果如下:

打包成可运行的jar包

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

  1. jar{
  2. manifest{
  3. // 这个必须填写主入口类,也就是有Main方法的类
  4. attributes 'Main-Class': 'gradle.demo.GradleDemo'
  5. }
  6. from{
  7. configurations.runtimeClasspath.collect {
  8. it.isDirectory() ? it : zipTree(it)
  9. }
  10. }
  11. }

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

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

相关文章