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有的功能它都 ...
随机推荐
- [leetcode]83. Remove Duplicates from Sorted List有序链表去重
Given a sorted linked list, delete all duplicates such that each element appear only once. Example 1 ...
- C++ 实现分数的四则运算
对分数求加减乘除,以及化简 #include<iostream> #include<math.h> using namespace std; struct Fraction{ ...
- angularJs, ui-grid 设置默认group, 及排序
- 开始Dev之路
从今天开始,开启Dev的发展之路.
- C# WebService服务器搭建、发布、上线、调试
C# WebService服务器搭建.发布.上线.调试 1. WebService服务器搭建 开发环境选择VS2017版本 步骤1:打开VS,文件->新建 ->项目->ASP.NE ...
- java对PDF文档的各种操作
https://www.cnblogs.com/h--d/p/6150320.html(仅以提醒,导航的作用)
- 几种String对象方法的区别
1.在String对象方法中,发现.slice()方法和.substring()方法的作用几乎相同,都是根据起始索引返回截取得到的字符串.经过查阅资料和实测得到区别: 正常情况下索引都为正值,返回值为 ...
- Scanner 类的使用
/* Scanner类的使用: 1.导类 2.创建对象 3.调用对应的方法获取数据 */ import java.util.Scanner;//导入Scanner类 public class IfDe ...
- Vuejs——(11)组件——slot内容分发
版权声明:出处http://blog.csdn.net/qq20004604 目录(?)[+] 本篇资料来于官方文档: http://cn.vuejs.org/guide/components ...
- 使用 Resharper 快速做适配器
如果需要做一个类的重写,需要重新写这个类的所有属性和函数,本文提供一个简单的方法让大家快速重写一个类的所有属性和函数. 在有 Resharper 之后,对一个比较长的类进行重构.例如有这个类 clas ...