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 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/

猜你喜欢

转载自www.cnblogs.com/baijifeilong/p/9235165.html