近期有使用一个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 groups
和using qualified names
选哪一个的问题,Stackoverflow上有具体的解释:
https://stackoverflow.com/questions/48162404/intellij-gradle-using-explicit-module-groups-vs-using-qualified-names
项目结构
在IDEA创建完成后,可以看到如下的目录结构
1 | ├─.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 | public class HelloWorld { |
此时右键运行HelloWorld:main()
显示结果如下:
1 | 23:08:48: Executing task 'HelloWorld.main()'... |
配置Jar文件的主类
Java插件在项目中加入了一个Jar任务,每一个Jar对象都一个manifest属性,这个属性是Manifest的一个实例。在build.gradle文件中设置Main-Class属性的值,指定程序入口。
1 | jar { |
Gradle打包
需要用到的几个Gradle命令:
- -v: 查看构建版本
- assemble: 编译程序中的源代码,并打包生成Jar文件,不执行单元测试
- build: 执行一个完整的项目构建
- clean: 删除构建目录
在Terminal中进行操作:
1 | >gradlew build |
执行成功后,可以在build/libs文件中,找到GradleDemo-1.0-SNAPSHOT.jar
接下来执行:
1 | > java -jar .\build\libs\GradleDemo-1.0-SNAPSHOT.jar |
到这一个简单的学习就结束了,后面的任务也就可以继续了