Gradle是一个项目构建工具,目前支持Java、Groovy、Kotlin、Scala。构建脚本使用Groovy或Kotlin,目前一般用Groovy。
brew install gradle
pacman -S gradle
choco install gradle
gradle
gradle help
Gradle的基本用法gradle <task>
运行指定任务gradle --version
查看Gradle、JVM的版本号gradle --help
帮助,列出全部命令行选项gradle tasks
列出当前可用的构建任务gradle help --task <task>
指定任务的帮助信息提示:先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)有何优势。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'
)
}
}
坑多,踩得差不多了,就比Maven好用了
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下),完成。
gradle run
添加系统变量gradle run
默认不会将命令行参数传给主程序,需要手动处理
run {
// 传递所有变量(-Dxxx=yyy)
systemProperties System.getProperties()
// 传递指定变量(-Dmybariable=xxxxx)
systemProperty "myvariable", System.getProperty("myvariable")
// 传递命令行参数(main函数中的"String[] args")
args System.getProperty("exec.args", "").split()
}
或者
tasks.withType(JavaExec) {
systemProperties System.properties
}
~/.gradle
,果然OK. 具体操作步骤:关闭Charles(确保系统的代理配置是空的)、新开命令行(确保不受代理环境变量影响),rm -rf ~/.gradle && gradle build
应该就好了。rm -rf ~/.gradle
删除Gradle的全局缓存即可(注意:缓存的jar包也全都会被删除!!!必要的话可以只保留jar包目录,删除其他缓存)