
通过一个简单的HelloWorld Java项目,学习如何使用Gradle编译和打包我们的工程项目
建议使用安装程序进行安装,例如在Mac下进行Homebrew安装($ brew update && brew install gradle),可以使用SDKMAN($ sdk install gradle 4.0.1)安装基于Unix的系统,具体安装方法和步骤请参考官网安装地址:
为了测试Gradle是否成功安装,我们可以在命令行上执行gradle命令,显示结果如下: 安装成功:
billyangMacBook-Air:~ billyang$ gradle
Starting a Gradle Daemon (subsequent builds will be faster)
:help
Welcome to Gradle 3.2.
To run a build, run gradle <task> ...
To see a list of available tasks, run gradle tasks
To see a list of command-line options, run gradle --help
To see more detail about a task, run gradle help --task <task>
BUILD SUCCESSFUL
Total time: 4.155 secs
billyangdeMacBook-Air:~ billyang$
为了更好地演示如何使用Gradle脚本编译我们的项目,我们尝试创建一个非常简单的java项目,该项目仅包含HelloWorld.java文件.
打开我们熟悉的IDE工具. 在此文件中,作者使用IntelliJ IDEA 14创建一个HelloWorld项目.

图1创建一个新项目

图2选择Gradle项目选项

图3设置项目配置项
下一步,直到完成为止,我们可以看到创建的项目目录结构如下:

图4默认项目目录结构

IDE工具将自动为我们创建许多配置文件和目录. 这是使用IDE的优势,但是对于初学者来说,看到如此多的文件和目录可能会很茫然. 我们可以先删除一些文件和目录,然后在以后熟悉Gradle的用法之后gradle编译java项目,让我们关注其他相关配置. 最终的简化项目目录结构如下(实际项目不需要简化):

图5简化的项目文件和目录结构
精简后,主要包括三个目录和一个gradle配置文件,如下所述.
.gradle目录: 与Gradle相关的缓存配置和其他内容,隐藏文件夹
.idea目录: 与IDEA项目工程相关的配置内容,它是一个隐藏文件夹
Src目录: Java代码目录
build.gradle配置文件: Gradle脚本配置文件
首先,包名称com.bill在src / main / java /目录中,然后在该包下创建一个HelloWorld.java文件,其中输出输出: Hello world.
package com.bill;
/**
* Created by Bill on 17/7/14.
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world");
}
}
在IDEA工具中,打开“终端”终端(也可以直接打开系统终端),输入gradletasks命令以查看当前项目中可用的任务,如下所示:

图6查看gradle任务
从图片中我们可以看到IDEA自动为我们添加了一些默认任务(稍后将讨论如何添加它们). 具体任务如下:
Build tasks
-----------
assemble - 编译打包该工程内容
build - 编译打包并测试该工程
buildDependents - 编译打包并测试该工程和所有依赖它的工程
buildNeeded - 编译打包并测试该工程和它依赖的所有工程
classes - 编译打包主要的类文件
clean - 删除编译目录
jar - 编译打成jar包,这个jar包包含主要的类文件
testClasses - 编译打包测试类文件

在编写任何gradle代码之前,我们首先可以体验这些预添加的任务功能. 我们选择构建任务来编译和打包项目. 执行结果如下:

图7执行gradle构建的结果
从图中可以看到,只要执行一个简单的单行命令,就可以完成当前项目的编译和打包. 打包后,将自动生成一个构建文件夹,并在下面详细描述目录结构.
classes目录: 存储编译的类文件,即.class文件
dependency-cache: 存储相关依赖项的缓存数据
库: 存储最终的已编译jar包
tmp: 在编译过程中存储临时文件
通过Gradle中的这些任务,我们可以轻松地编译和打包项目,并且通过添加插件可以轻松地实现这些任务. 首先让我们看看在创建项目时为我们自动添加了哪些IDE工具. gradle脚本内容?
group 'com.bill' // 在图三中设置的group项
version '1.0-SNAPSHOT' // 在图三中设置的version项
// 第三方插件
apply plugin: 'java'
// 设置 JDK 版本
sourceCompatibility = 1.8
targetCompatibility = 1.8
// 指定maven仓库为maven中央仓库
repositories {
mavenCentral()
}
// 设置项目的依赖库
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
}
相关代码行的注释已经非常清楚了. 最重要的一个是apply插件: “ java”,它告诉gradle使用第三方java插件,因此我们可以简单地使用gradle build命令进行编译和打包,然后gradle Java插件的特定任务任务之间的依赖关系可以在官方网站()上找到. 具体的关系图如下:

图8 gradle java插件任务依赖性
结合执行gradle build命令的先前过程(参见图7),我们可以清楚地看到每个任务的执行顺序(图8中的箭头表示构建调用过程):
:compileJava
:processResources UP-TO-DATE
:classes
:jar
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build

接下来,我们实现添加一个依赖包,例如使用Gson来实现json操作. 首先在Maven存储库()中搜索Gson,结果如下:

图9 Maven存储库中的Gson
将编译组: “ com.google.code.gson”,名称: “ gson”,版本: “ 2.8.0”复制到build.gradle文件中,完成如下:
group 'com.bill'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.0'
testCompile group: 'junit', name: 'junit', version: '4.11'
}
然后在HelloWorld.java中添加以下代码:
public class HelloWorld {
public static void main(String[] args) {
Person p = new Person();
p.setName("Bill.Yang");
p.setAge(30);
Gson gson = new GsonBuilder().create();
String pJson = gson.toJson(p);
System.out.println("Hello world," + pJson);
}
}
同时添加Person.java类,如下所示:
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
现在让我们执行gradle build命令,看看编译后的结果是什么?这次,我们可以使用IDEA工具的可视界面执行构建命令,如下所示:

图10直观地执行构建命令
编译一切正常,这证明我们刚刚添加的依赖库已成功引入项目中.
大多数时候,我们希望最后生成的jar包是我们自己指定的名称,而不是使用项目的项目名称. Gradle为我们提供了以下方法:
jar {
baseName = 'first-gradle'
version = '0.1.0'
}

jar代码块指定如何命令JAR文件. 在此示例中gradle编译java项目,它将被命令为: first-gradle-0.1.0.jar,如下所示:

图11指定jar名称
使用Gradle编译项目时,使用Gradle Wrapper是一个很好的方法. 它为Windows,OS X和Linux平台提供了相应的脚本文件. 这些脚本允许您在不同平台上使用不同的Gradle版本. 正确执行已编译和打包的脚本. 我们只需要执行一个命令,Gradle就会自动将Wrapper相关的配置信息添加到我们的项目中,而无需手动修改任何代码配置等. 该命令如下:
$ gradle wrapper --gradle-version 3.2
执行上述命令时,您会注意到一些新文件已添加到项目中: 根目录中的两个脚本文件; gradle /包装器目录. 其结构如下:

图12添加包装程序后的目录结构
Gradle Wrapper现在可以用于编译我们的项目. 我们还可以将Wrapper相关的配置信息添加到版本控制系统中. 克隆我们项目的任何人都可以以相同的方式编译和打包项目.
./gradlew build
恭喜您已通过Gradle成功实现了一个简单的HelloWorld项目编译和打包任务. 在这里,您学习了如何安装Gradle,如何使用gradle build编译项目,如何向项目中添加依赖库以及如何使用Gradle Wrapper编译项目. 如果您想了解更多,可以关注云时代的架构.

云时代架构公众号

杨彪的简介博客
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-191139-1.html
只是要更加快一点步伐