1. 什么是Gradle

Gradle是一个项目构建工具,目前支持Java、Groovy、Kotlin、Scala。构建脚本使用Groovy或Kotlin,目前一般用Groovy。

2. Gradle的安装

  • macOS:brew install gradle
  • ArchLinux: pacman -S gradle
  • Windows: choco install gradle

3. Gradle常用命令

  • gradle gradle help Gradle的基本用法
  • gradle <task> 运行指定任务
  • gradle --version 查看Gradle、JVM的版本号
  • gradle --help 帮助,列出全部命令行选项
  • gradle tasks 列出当前可用的构建任务
  • gradle help --task <task> 指定任务的帮助信息

4. 创建Gradle项目

提示:先mkdir <myProject> && cd <myProject>。因为Gradle会以当前目录为项目根目录

  • gradle help --task init 查看init任务的帮助信息
  • gradle init 创建空Gradle项目
  • gradle init --type java-application 创建Java应用
  • gradle init --type java-library 创建Java库(无main函数)
  • gradle init --type java-application --dsl kotlin 创建Java应用,gradle脚本不用默认的groovy脚本,改用kotlin脚本。不建议使用,目前即使在Kotlin亲妈IntelliJ IDEA上,也没感觉在gradle构建脚本使用KTS(KotlinScript)有何优势。

5. Gradle常用任务

  • gradle help 帮助
  • gradle init 初始化项目(创建项目)
  • gradle clean 清理项目
  • gradle build 编译项目
  • gradle run 运行项目(不支持java-library类型的项目,没有application插件,也没有main方法)
  • gradle tasks 列出全部任务
  • gradle dependencies 列出项目依赖树
  • gradle jar 生成jar包(到build/libs目录下)

注意:gradle jar生成的jar包是不能直接运行的。需要配置Manifest。在build.gradle添加以下内容(替换为自己的Main-Class):

jar {
  manifest {
    attributes(
      'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
      'Main-Class': 'App'
    )
  }
}

6. 跟Maven比较

坑多,踩得差不多了,就比Maven好用了

7. Lombok的配置

Lombok在Maven中加个依赖就行,在Gradle中比较麻烦,例子如下:

plugins {
    id 'io.franzbecker.gradle-lombok' version '1.14'
}

apply plugin: 'java'

dependencies {
    compile 'org.projectlombok:lombok'
}

repositories {
    mavenCentral()
}

需要一个依赖与一个插件

注意:在IDEA中,直接运行某main函数,lombok不工作,只能通过gradle rungradle bootRun(For SpringBoot)运行。在IDEA配合Maven项目时,则没有这个问题。不知是Gradle的锅还是IDEA的锅。

关键时候还是重启大法好,IDEA不应该有这么磨人的bug。重启IDEA,会提示开启注解处理。打勾(在Build->Compiler->AnnotationProcessors下),完成。

其他注意事项

  • macOS开启Charles代理的时候,Gradle默认会走代理,下载依赖的时候会因为证书问题下载失败。此时关闭代理,重开命令行窗口仍然不行,Gradle会提示连接代理服务器失败。应该是Gradle将代理配置保存到了全局。没找到配置文件,我试着删除~/.gradle,果然OK. 具体操作步骤:关闭Charles(确保系统的代理配置是空的)、新开命令行(确保不受代理环境变量影响),rm -rf ~/.gradle && gradle build 应该就好了。
  • 上一条的总结归纳:如果Gradle在关闭系统代理后,仍然走代理,此时rm -rf ~/.gradle删除Gradle的全局缓存即可(注意:缓存的jar包也全都会被删除!!!必要的话可以只保留jar包目录,删除其他缓存)

文章首发链接:https://baijifeilong.github.io/2018/06/27/gradle/

Gradle 大杂烩的更多相关文章

  1. Gradle配置APK自动签名完整流程

    转载请注明出处:http://www.cnblogs.com/LT5505/p/6256683.html 一.生成签名 1.命令行生成签名,输入命令keytool -genkey -v -keysto ...

  2. gradle学习笔记(1)

    1. 安装     (1) 下载最新gradle压缩包,解压到某处.地址是:Gradle web site:     (2) 添加环境变量:             1) 变量名:GRADLE_HOM ...

  3. Gradle 实现 Android 多渠道定制化打包

    Gradle 实现 Android 多渠道定制化打包 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在项目中遇到需要实现 Apk 多渠道.定制化打包, Google .百度查找了一些资料, ...

  4. 解决 Could not find com.android.tools.build:gradle 问题

    今天拉同事最新的代码,编译时老是报如下错误: Error:Could not find com.android.tools.build:gradle:2.2.0.Searched in the fol ...

  5. React Native Android gradle下载慢问题解决

    很多人会遇到 初次运行 react-native run android的时候 gradle下载极慢,甚至会失败的问题 如下图 实际上这个问题好解决的 首先 把对应版本的gradle下载到本地任意一个 ...

  6. Android studio使用gradle动态构建APP(不同的包,不同的icon、label)

    最近有个需求,需要做两个功能相似的APP,大部分代码是一样的,只是界面不一样,以前要维护两套代码,比较麻烦,最近在网上找资料,发现可以用gradle使用同一套代码构建两个APP.下面介绍使用方法: 首 ...

  7. 对Maven、gradle、svn、spring 3.0 fragment、git的想法

    1.Maven Maven可以构建项目,采用pom方式配置主项目和其他需要引用的项目.同时可结合spring3.0的新特性web  fragment. 从现实出发,特别是对于管理不到位,程序员整体素质 ...

  8. 项目自动化建构工具gradle 入门1——输出helloWorld

    先来一个简单的例子,4个步骤: 1.进入D:\work\gradle\java 目录  ,您电脑没这目录? 那辛苦自己一级一级建立起来吧 新建文件build.gradle,文件内容是: apply p ...

  9. 用IntelliJ IDEA创建Gradle项目简单入门

    Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...

随机推荐

  1. Python下安装MySQLdb模块

    ----------------------[针对Windows下python 的MySQLdb模块安装]--------------------- 一.检查MySQLdb模块是否安装,可在DOS命令 ...

  2. js原生的节点操作API

    // yi获取元素节点 //一 :过id的方式( 通过id查找元素,大小写敏感,如果有多个id只找到第一个) document.getElementById('div1'); // 通过类名查找元素, ...

  3. boost asio 学习(九) boost::asio 网络封装

    http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting- started-with-boostasio?pg=10 9. A ...

  4. 【APP测试(Android)】--安全测试

  5. s6-1 传输层概述

    6.1 传输层概述 传输层概述 传输层是整个协议栈(TCP/IP)的核心 传输层的任务是提供可靠的.高效的数据传输 传输层的地位 网络层.传输层和应用层  传输层在应用层和网络层之间提供了无缝接口 ...

  6. Cannot set property 'onclick' of null报错

    经常几个页面使用公共js文件, 原来遇到也没留意, 原来是本页面执行的时候, 其他页面也在执行并赋予id于onclick. 因为页面是正常情况下是不存在null和undefined if(null){ ...

  7. Maths | 离散K-L变换/ 主成分分析法

    目录 1. 概述 2. K-L变换方法和原理推导 2.1. 向量分解 2.2. 向量估计及其误差 2.3. 寻找最小误差对应的正交向量系 3. K-L变换高效率的本质 4. PCA在编.解码应用上的进 ...

  8. Nginx unit 源码安装初体验

    Nginx unit 源码安装初体验 上次介绍了从yum的安装方法(https://www.cnblogs.com/wang-li/p/9684040.html),这次将介绍源码安装,目前最新版为1. ...

  9. 让用户输入一个日期字符串,将其转换成日期格式, 格式是(yyyy/MM/dd,yyyyMMdd,yyyy-MM-dd)中的一种, 任何一种转换成功都可以; 如果所有的都无法转换,输出日期格式非法。

    第三种方法 while(true) {             Date d;        System.out.println("正在进行第一次匹配,请稍后~—~");     ...

  10. 20155326刘美岑 《网络对抗》Exp1 PC平台逆向破解

    20155326刘美岑 <网络对抗>逆向及Bof基础实践 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函 ...