白季飞龙的个人主页

Gradle大杂烩

1. 什么是Gradle

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

2. Gradle的安装

3. Gradle常用命令

4. 创建Gradle项目

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

5. Gradle常用任务

注意: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下),完成。

8. 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
}

其他注意事项


漫漫路,莫论逍遥;潜心修,只为悟道