Gradle的基本使用

近期有使用一个Java开发的开源项目,构建工具是Gradle,身边负责Java开发的同事都在使用Maven,那这玩意怎么配置和使用就只能自己解决了。

Gradle简介

Gradle是一个基于JVM的构建工具,支持Maven仓库,支持传递性依赖管理,不需要远程仓库或者是pom.xml配置文件,基于Groovy,build脚本使用Groovy编写。看官网的介绍,支持Java、C++、Python…好像很厉害的样子,等等Groovy又是啥啊?

创建项目

最强IDE当然是jetbrains全家桶了,所以,IntelliJ IDEA怎么创建一个Gradle项目,网上有很多的例子,我觉得只看这一个就够了:
https://www.jetbrains.com/help/idea/getting-started-with-gradle.html

当然创建的时候还是有不一样的地方,比如using explicit module groupsusing qualified names选哪一个的问题,Stackoverflow上有具体的解释:
https://stackoverflow.com/questions/48162404/intellij-gradle-using-explicit-module-groups-vs-using-qualified-names

项目结构

在IDEA创建完成后,可以看到如下的目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
├─.gradle
├─.idea
├─gradle
│ └─wrapper
└─src
│ ├─main
│ │ ├─java
│ │ └─resources
│ └─test
│ ├─java
│ └─resources
├─build.gradle
├─gradlew
├─gradlew.bat
├─settings.gradle

build.gradle: 构建脚本,指定了一个项目和它的任务。
gradle.settings: 设置文件,如果是单项目构建,该文件是可选的;如果是多项目构建,该文件必须存在,因为它定义了哪一个项目参与构建。

更多的信息可查看:
https://docs.gradle.org/current/userguide/tutorial_using_tasks.html
https://docs.gradle.org/current/userguide/build_lifecycle.html#sec:settings_file

src/main/java: 项目的源代码
src/main/resources: 项目的资源
src/test/java: 测试类
src/test/resources: 测试资源

Java插件

Gradle提供了一些功能,用于自动化,都是通过插件进行添加的。通过Gradle插件实现:

  • 将任务添加到项目(如编译、 测试)
  • 使用有用的默认设置对已添加的任务进行预配置
  • 向项目中添加依赖配置
  • 通过扩展对现有类型添加新的属性和方法

那么我们想使用Java插件的话,只需要在build.gradle文件中增加一行:

1
apply plugin: 'java'

HelloWorld

刚学一个新东西,肯定是离不开Hello World!的,在java文件夹下新建一个主类:

1
2
3
4
5
6
public class HelloWorld {

public static void main(String[] args) {
System.out.println("Hello World!");
}
}

此时右键运行HelloWorld:main()显示结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
23:08:48: Executing task 'HelloWorld.main()'...

> Task :compileJava
> Task :processResources NO-SOURCE
> Task :classes

> Task :HelloWorld.main()
Hello World!

BUILD SUCCESSFUL in 0s
2 actionable tasks: 2 executed
23:08:48: Task execution finished 'HelloWorld.main()'.

配置Jar文件的主类

Java插件在项目中加入了一个Jar任务,每一个Jar对象都一个manifest属性,这个属性是Manifest的一个实例。在build.gradle文件中设置Main-Class属性的值,指定程序入口。

1
2
3
4
5
jar {
manifest {
attributes 'Main-Class': 'HelloWorld'
}
}

Gradle打包

需要用到的几个Gradle命令:

  • -v: 查看构建版本
  • assemble: 编译程序中的源代码,并打包生成Jar文件,不执行单元测试
  • build: 执行一个完整的项目构建
  • clean: 删除构建目录

在Terminal中进行操作:

1
2
3
4
>gradlew build

BUILD SUCCESSFUL in 2s
2 actionable tasks: 2 executed

执行成功后,可以在build/libs文件中,找到GradleDemo-1.0-SNAPSHOT.jar

接下来执行:

1
2
> java -jar .\build\libs\GradleDemo-1.0-SNAPSHOT.jar
Hello World!

到这一个简单的学习就结束了,后面的任务也就可以继续了

参考链接

https://www.w3cschool.cn/gradle/aymc1huc.html

0%