Gradle 大杂烩
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 run
或gradle 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 大杂烩的更多相关文章
- Gradle配置APK自动签名完整流程
转载请注明出处:http://www.cnblogs.com/LT5505/p/6256683.html 一.生成签名 1.命令行生成签名,输入命令keytool -genkey -v -keysto ...
- gradle学习笔记(1)
1. 安装 (1) 下载最新gradle压缩包,解压到某处.地址是:Gradle web site: (2) 添加环境变量: 1) 变量名:GRADLE_HOM ...
- Gradle 实现 Android 多渠道定制化打包
Gradle 实现 Android 多渠道定制化打包 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在项目中遇到需要实现 Apk 多渠道.定制化打包, Google .百度查找了一些资料, ...
- 解决 Could not find com.android.tools.build:gradle 问题
今天拉同事最新的代码,编译时老是报如下错误: Error:Could not find com.android.tools.build:gradle:2.2.0.Searched in the fol ...
- React Native Android gradle下载慢问题解决
很多人会遇到 初次运行 react-native run android的时候 gradle下载极慢,甚至会失败的问题 如下图 实际上这个问题好解决的 首先 把对应版本的gradle下载到本地任意一个 ...
- Android studio使用gradle动态构建APP(不同的包,不同的icon、label)
最近有个需求,需要做两个功能相似的APP,大部分代码是一样的,只是界面不一样,以前要维护两套代码,比较麻烦,最近在网上找资料,发现可以用gradle使用同一套代码构建两个APP.下面介绍使用方法: 首 ...
- 对Maven、gradle、svn、spring 3.0 fragment、git的想法
1.Maven Maven可以构建项目,采用pom方式配置主项目和其他需要引用的项目.同时可结合spring3.0的新特性web fragment. 从现实出发,特别是对于管理不到位,程序员整体素质 ...
- 项目自动化建构工具gradle 入门1——输出helloWorld
先来一个简单的例子,4个步骤: 1.进入D:\work\gradle\java 目录 ,您电脑没这目录? 那辛苦自己一级一级建立起来吧 新建文件build.gradle,文件内容是: apply p ...
- 用IntelliJ IDEA创建Gradle项目简单入门
Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...
随机推荐
- python的序列类
1,我们常见的数据结构有哪些是序列类 序列类型的分类: ① 容器序列:list,tuple,deque(可以防止任意的类型的容器) ② 扁平序列:str,bytes,bytearray,array ...
- C++中重载操作符[ ]
1.首先说说为什么要重载操作符[ ] 主要是因为系统只给了整数类型(int)的重载函数,即只能在方括号中输入整数进行查找,但有时候我们可能存放数据时,下标的类型是自定义的,希望也能像数组直接通过下标访 ...
- 15. pk-mext
在平时的生产环境中,我们经常会碰到监控MySQL的各个状态值的一个变化趋势,然后就会自己写个脚本,将status快照保存到文本中.当我们去分析的时候,需要自己去比较差值,是一件比较麻烦的时候,虽然可以 ...
- [费用流][BZOJ1070]修车
修车 题目描述 同一时刻有位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均 ...
- python基础之Day15
一.函数递归 什么是函数递归: 函数递归调用是一种特殊的嵌套调用,在调用一个函数的过程中,又直接或间接地调用了该函数本身. 其中,函数的递归有明确的结束条件,不能无限制的调用,否则会撑破内存,在Pyt ...
- 深入理解JVM(一)编译openJDK
此文总结的很不错:https://www.cnblogs.com/ACFLOOD/p/5528035.html 准备openJDK源码和环境 1.在linux和macOS上编译openJDK更加友好, ...
- ORA-12514: TNS:监听程序当前无法识别连接描述符中请
若Oracle出现“监听程序当前无法识别连接描述符中请求的服务”这个错误可以按照以下方法解决: 可以通过这个路径找到一个文本文件: oracle\product\10.2.0\db_1\NETWORK ...
- jenkins可选插件为空的解决方式
我是安装的jenkins,文件名字是这个jenkins.msi,点finish安装完成,然后浏览器就自动打开了jenkins页面,输入密码后,便进入了如下页面 之后我是选择的跳过插件安装,在可选插件里 ...
- linux 系统管理学习
Linux系统管理一.进程管理1.进程管理的作用1)判断服务器健康状态2)查看系统中所有进程3)杀死进程2.进程的查看1)查看所有进程ps aux 查看系统中所有进程ps -le 查看系统中所有进程- ...
- TabLoaout简单框架
import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design. ...