百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

教小白使用Gradle构建Java项目(gradle 构建)

toyiye 2024-07-08 22:52 11 浏览 0 评论

本指南将引导您逐步使用Gradle构建一个简单的Java项目。

你会建立什么

您将创建一个简单的应用程序,然后使用Gradle进行构建。

你需要什么

1. 约15分钟

2. 最喜欢的文本编辑器或IDE

3. JDK 6或更高版本

如何完成本指南

像大多数Spring 入门指南一样,您可以从头开始并完成每个步骤,也可以绕过您已经熟悉的基本设置步骤。无论哪种方式,您最终都可以使用工作代码。

要从头开始,请继续以设置项目。

要跳过基础知识,请执行以下操作:

[下载](https://github.com/spring-guides/gs-gradle/archive/master.zip)并解压缩本指南的源存储库,或使用Git对其进行克隆:git clone https://github.com/spring-guides/gs-gradle.git

光盘进入 gs-gradle/initial

跳到安装Gradle。

完成后,您可以根据中的代码检查结果gs-gradle/complete。

设置项目

首先,为Gradle设置一个Java项目。为了继续关注Gradle,现在使该项目尽可能简单。

创建目录结构

在您选择的项目目录中,创建以下子目录结构;例如,*mkdir -p src/main/java/hello在 nix**系统上:

使用Gradle构建Java项目

在src/main/java/hello目录中,您可以创建所需的任何Java类。为了简单起见并与本指南的其余部分保持一致,Spring建议您创建两个类:HelloWorld.java和Greeter.java。


src/main/java/hello/HelloWorld.java

.

package hello;


public class HelloWorld {

public static void main(String[] args) {

Greeter greeter = new Greeter();

System.out.println(greeter.sayHello());

}

}

.


src/main/java/hello/Greeter.java

.


package hello;

public class Greeter {

public String sayHello() {

return "Hello world!";

}

}

安装Gradle

现在您有了可以使用Gradle生成的项目,您可以安装Gradle。

强烈建议使用安装程序:

SDKMAN(https://sdkman.io/)

Homebrew(https://brew.sh/ brew install gradle)

万不得已,如果这些工具都不满足您的需求,则可以从https://www.gradle.org/downloads 下载二进制文件。仅需要二进制文件,因此请查找gradle- version -bin.zip 的链接。(您也可以选择gradle- version -all.zip来获取源代码,文档以及二进制文件。)

将文件解压缩到您的计算机,然后将bin文件夹添加到您的路径。

要测试Gradle的安装,请从命令行运行Gradle:

gradle

如果一切顺利,您会看到一条欢迎消息:

:help


Welcome to Gradle 2.3.


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


BUILD SUCCESSFUL


Total time: 2.675 secs

您现在已经安装了Gradle。

找出Gradle可以做什么

现在已经安装了Gradle,看看它能做什么。在为项目创建build.gradle文件之前,您可以询问它可用的任务:

gradle tasks

您应该看到可用任务的列表。假设您在尚未具有build.gradle文件的文件夹中运行Gradle ,您将看到一些非常基本的任务,例如:

:tasks


== All tasks runnable from root project


== Build Setup tasks

setupBuild - Initializes a new Gradle build. [incubating]


== Help tasks

dependencies - Displays all dependencies declared in root project 'gs-gradle'.

dependencyInsight - Displays the insight into a specific dependency in root project 'gs-gradle'.

help - Displays a help message

projects - Displays the sub-projects of root project 'gs-gradle'.

properties - Displays the properties of root project 'gs-gradle'.

tasks - Displays the tasks runnable from root project 'gs-gradle'.


To see all tasks and more detail, run with --all.


BUILD SUCCESSFUL


Total time: 3.077 secs

即使这些任务可用,但如果没有项目构建配置,它们也不会提供太多价值。当您充实build.gradle文件时,一些任务会更有用。当您向中添加插件时build.gradle,任务列表将不断增加,因此您偶尔会希望再次运行任务以查看可用的任务。

说到添加插件,接下来您将添加一个启用基本Java构建功能的插件。

构建Java代码

从简单build.gradle开始,在本指南开头创建的<项目文件夹>中创建一个非常基本的文件。只给它一行:

apply plugin: 'java'

构建配置中的这一行带来了巨大的力量。再次运行gradle任务,您会看到新任务已添加到列表中,包括用于构建项目,创建JavaDoc和运行测试的任务。

您将经常使用gradle构建任务。该任务将代码编译,测试并将其组装为一个JAR文件。您可以这样运行它:

gradle build

几秒钟后,“ BUILD SUCCESSFUL”表明构建已完成。

要查看构建工作的结果,请查看构建文件夹。在其中,您会找到几个目录,包括以下三个著名的文件夹:


classes. The project’s compiled .class files.


reports. Reports produced by the build (such as test reports).


libs. Assembled project libraries (usually JAR and/or WAR files).

classes文件夹包含.class文件,这些文件是通过编译Java代码生成的。具体来说,您应该找到HelloWorld.class和Greeter.class。

此时,该项目没有任何库依赖关系,因此dependency_cache文件夹中没有任何内容。

reports文件夹应包含项目上正在运行的单元测试的报告。由于该项目尚无任何单元测试,因此该报告将变得毫无意义。

libs文件夹应包含一个以项目文件夹命名的JAR文件。再往下看,您将看到如何指定JAR的名称及其版本。

声明依赖

简单的Hello World示例完全是独立的,并且不依赖于任何其他库。但是,大多数应用程序都依赖于外部库来处理常见和/或复杂的功能。

例如,假设除了说“ Hello World!”外,您还希望应用程序打印当前日期和时间。您可以使用本机Java库中的日期和时间工具,但是可以使用Joda Time库使事情变得更有趣。

首先,将HelloWorld.java更改如下:


package hello;


import org.joda.time.LocalTime;


public class HelloWorld {

public static void main(String[] args) {

LocalTime currentTime = new LocalTime();

System.out.println("The current local time is: " + currentTime);


Greeter greeter = new Greeter();

System.out.println(greeter.sayHello());

}

}

这里HelloWorld使用Joda Time的LocalTime类来获取并打印当前时间。

如果您gradle build现在运行以构建项目,则构建将失败,因为您尚未在构建中将Joda Time声明为编译依赖项。

对于初学者,您需要添加第三方库的源。

repositories {

mavenCentral()

}

该repositories块指示该构建应从Maven Central存储库中解决其依赖关系。Gradle在很大程度上依赖于Maven构建工具建立的许多约定和功能,包括使用Maven Central作为库依赖源的选项。

现在我们已经准备好第三方库了,让我们声明一下。

sourceCompatibility = 1.8

targetCompatibility = 1.8


dependencies {

compile "joda-time:joda-time:2.2"

testCompile "junit:junit:4.12"

}

使用该dependencies块,您可以声明Joda Time的单个依赖关系。具体来说,您需要在joda-time组中要求(从右到左阅读)joda-time库的2.2版。

关于此依赖关系的另一件事要注意,它是一个compile依赖关系,表明它在编译时应该可用(并且如果您正在构建WAR文件,则包含在WAR的/ WEB-INF / libs文件夹中)。其他值得注意的依赖类型包括:

providedCompile。编译项目代码所需的依赖关系,但是将在运行时由运行代码的容器(例如Java Servlet API)提供。


testCompile。用于编译和运行测试的依赖关系,但对于构??建或运行项目的运行时代码不是必需的。

最后,让我们为我们的JAR工件指定名称。

.

jar {

baseName = 'gs-gradle'

version = '0.1.0'

}

该jar块指定如何命名JAR文件。在这种情况下,它将渲染gs-gradle-0.1.0.jar。

现在,如果您运行gradle build,则Gradle应该从Maven Central存储库中解决Joda Time依赖关系,并且构建将成功。

使用Gradle Wrapper构建项目

Gradle包装器是开始Gradle构建的首选方法。它由Windows的批处理脚本以及OS X和Linux的Shell脚本组成。这些脚本允许您运行Gradle构建,而无需在系统上安装Gradle。这曾经是添加到您的构建文件中的东西,但是已经被折叠到Gradle中,因此不再需要。相反,您只需使用以下命令。

$ gradle wrapper --gradle-version 2.13

该任务完成后,您会注意到一些新文件。这两个脚本位于文件夹的根目录中,而包装jar和属性文件已添加到新gradle/wrapper文件夹中。

使用Gradle构建Java项目

Gradle包装器现在可用于构建您的项目。将其添加到您的版本控制系统中,每个克隆您的项目的人都可以相同地构建它。它的使用方式与Gradle的安装版本完全相同。运行包装程序脚本以执行构建任务,就像之前一样:

./gradlew build

第一次为指定版本的Gradle运行包装程序时,它将下载并缓存该版本的Gradle二进制文件。Gradle Wrapper文件旨在提交给源代码管理,以便任何人都可以构建项目,而无需首先安装和配置特定版本的Gradle。

在这一阶段,您将构建代码。您可以在此处查看结果:

使用Gradle构建Java项目

包括的是两个预期类文件Greeter和HelloWorld,以及JAR文件。快速浏览:

$ jar tvf build/libs/gs-gradle-0.1.0.jar

0 Fri May 30 16:02:32 CDT 2014 META-INF/

25 Fri May 30 16:02:32 CDT 2014 META-INF/MANIFEST.MF

0 Fri May 30 16:02:32 CDT 2014 hello/

369 Fri May 30 16:02:32 CDT 2014 hello/Greeter.class

988 Fri May 30 16:02:32 CDT 2014 hello/HelloWorld.class

类文件捆绑在一起。需要注意的重要一点是,即使您将joda-time声明为依赖项,该库也不包含在此处。而且JAR文件也不可运行。

为了使此代码可运行,我们可以使用gradle的application插件。将此添加到您的build.gradle文件。

apply plugin: 'application'

mainClassName = 'hello.HelloWorld'

然后,您可以运行该应用程序!

$ ./gradlew run

:compileJava UP-TO-DATE

:proce***esources UP-TO-DATE

:classes UP-TO-DATE

:run

The current local time is: 16:16:20.544

Hello world!


BUILD SUCCESSFUL


Total time: 3.798 secs

捆绑依赖项需要更多的思考。例如,如果我们正在构建WAR文件(一种通常与打包第三方依赖相关的格式),则可以使用gradle的[WAR插件](https://docs.gradle.org/current/userguide/war_plugin.html)。如果您使用的是Spring Boot,并且想要一个可运行的JAR文件,则[spring-boot-gradle-plugin](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-gradle)非常方便。在此阶段,gradle对您的系统了解不足,无法做出选择。但是就目前而言,这应该足以开始使用gradle。

为了完成本指南的内容,下面是完整的build.gradle文件:

build.gradle

.

apply plugin: 'java'

apply plugin: 'eclipse'

apply plugin: 'application'


mainClassName = 'hello.HelloWorld'


// tag::repositories[]

repositories {

mavenCentral()

}

// end::repositories[]


// tag::jar[]

jar {

baseName = 'gs-gradle'

version = '0.1.0'

}

// end::jar[]


// tag::dependencies[]

sourceCompatibility = 1.8

targetCompatibility = 1.8


dependencies {

compile "joda-time:joda-time:2.2"

testCompile "junit:junit:4.12"

}

// end::dependencies[]


// tag::wrapper[]

// end::wrapper[]

这里嵌入了许多开始/结束注释。这样就可以将构建文件的位提取到本指南中,以进行上述详细说明。您的生产构建文件中不需要它们。

摘要

恭喜你!现在,您已经创建了一个简单而有效的Gradle构建文件,用于构建Java项目。

也可以看看

以下指南也可能会有所帮助:

[使用Maven构建Java项目]https://blog.csdn.net/weixin_46577306/article/details/105514482)

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码