使用Gradle编译Java项目的介绍

电脑杂谈  发布时间:2020-04-27 21:01:17  来源:网络整理

idea java gradle_gradle 编译_gradle编译java项目

通过一个简单的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默认项目目录结构

idea java gradle_gradle 编译_gradle编译java项目

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 - 编译打包测试类文件

idea java gradle_gradle编译java项目_gradle 编译

在编写任何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

idea java gradle_gradle 编译_gradle编译java项目

接下来,我们实现添加一个依赖包,例如使用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'
}

gradle编译java项目_gradle 编译_idea java gradle

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

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 张随
        张随

        只是要更加快一点步伐

      热点图片
      拼命载入中...