3、第一个Gradle项目:使用gradle init创建项目、理解build.gradle文件结构、执行第一个构建任务
说实话,很多初学者学Gradle,第一步就卡在「项目怎么建」上。我当年也是,对着命令行一脸懵。其实没那么复杂,今天我就带你亲手创建第一个Gradle项目,顺便把build.gradle这个核心文件拆开揉碎了讲清楚。
3.1 使用gradle init创建项目
Gradle自带一个脚手架工具,叫gradle init。它能帮你快速生成项目骨架,省去手动创建目录的麻烦。
打开终端,找个空目录,执行:
mkdir my-first-gradle-project
cd my-first-gradle-project
gradle init
你会看到交互式问答。嗯,这里要注意,不同版本的Gradle选项略有差异,但核心流程一样。我习惯这样选:
- 选择项目类型:选
application(应用程序) - 选择实现语言:选
Java - 选择DSL语言:选
Groovy(Gradle的默认脚本语言) - 选择测试框架:选
JUnit 4或JUnit 5,看个人喜好 - 输入项目名:直接回车用默认目录名
- 输入包名:比如
com.example
执行完后,目录结构大概长这样:
my-first-gradle-project/
├── build.gradle # 构建脚本,核心文件
├── settings.gradle # 项目设置文件
├── gradlew # Gradle Wrapper脚本(Unix)
├── gradlew.bat # Gradle Wrapper脚本(Windows)
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
└── src/
├── main/
│ ├── java/
│ │ └── com/example/
│ │ └── App.java
│ └── resources/
└── test/
└── java/
└── com/example/
└── AppTest.java
3.2 理解build.gradle文件结构
打开build.gradle,你会看到类似这样的内容:
plugins {
id 'java'
id 'application'
}
repositories {
mavenCentral()
}
dependencies {
testImplementation 'junit:junit:4.13.2'
implementation 'com.google.guava:guava:30.1.1-jre'
}
application {
mainClass = 'com.example.App'
}
这个文件就是Gradle构建的「大脑」。我把它拆成四个核心部分:
3.2.1 plugins块:声明插件
插件是Gradle的扩展能力。java插件提供了编译、测试、打包Java代码的能力;application插件则让你能直接运行应用程序。说白了,插件就是帮你把重复劳动自动化了。
3.2.2 repositories块:配置仓库
仓库就是依赖的「超市」。Gradle从这里下载你声明的第三方库。mavenCentral()是最常用的公共仓库。我在公司项目里还会加上私有仓库地址,比如maven { url 'http://nexus.company.com/repository/maven-public/' }。
3.2.3 dependencies块:声明依赖
这里写你的项目需要哪些外部库。格式是配置名 '组:库名:版本'。比如:
implementation:编译和运行时都需要,但不会暴露给使用者testImplementation:只在测试代码中使用compileOnly:只在编译时需要,运行时不需要(比如Lombok)
testImplementation写成了implementation,结果测试框架的依赖被打进了生产包,白白增加了体积。配置名一定要选对。
3.2.4 application块:配置入口
指定mainClass,告诉Gradle哪个类包含main方法。这样你执行gradle run时,Gradle就知道该启动谁。
3.3 执行第一个构建任务
现在项目有了,文件也理解了,我们来跑一下。Gradle提供了很多内置任务,最常用的几个:
| 任务名 | 作用 |
|---|---|
gradle build |
编译、测试、打包一条龙 |
gradle run |
编译并运行应用程序 |
gradle test |
只运行测试 |
gradle clean |
删除build目录,清理构建产物 |
gradle tasks |
列出所有可用任务 |
执行gradle run,你会看到类似输出:
> Task :compileJava
> Task :processResources
> Task :classes
> Task :run
Hello World!
看到「Hello World!」了吗?恭喜,你的第一个Gradle项目跑起来了。
run依赖classes,classes依赖compileJava和processResources。你执行一个任务,Gradle会自动把前置任务都跑一遍。这就是它智能的地方。
为了让你更直观地理解这个流程,我画了一张图:
你想想看,如果手动做这些事——编译、复制资源、运行——得敲多少命令?Gradle一个run全搞定。这就是构建工具的价值。
gradle build,确保脚手架生成的代码能正常编译通过。如果报错,先检查Java版本和Gradle版本是否匹配。这是最常见的坑。
好了,第一个项目你已经亲手建起来了。build.gradle的结构也心里有数了。接下来,你就可以在这个基础上,慢慢添加自己的代码和依赖,探索更多Gradle的玩法。