Gradle 入门指南:从安装到基础用法详解

文章目录

    • Gradle 简介
    • 安装 Gradle
    • 创建和配置 Gradle 项目
    • 将 Gradle 项目打成jar包
    • 多项目聚合
      • 示例项目结构
      • 步骤详解

Gradle 简介

Gradle 是一个基于 Groovy 和 Kotlin 的构建工具,用于自动化构建、依赖管理和项目管理。它结合了 Maven 的依赖管理和 Ant 的灵活性,提供了一种现代化的构建解决方案。与传统的 Apache Maven 和 Apache Ant 相比,它提供了更灵活、高效的构建系统和声明式的构建脚本语言。

安装 Gradle

安装 Gradle 非常简单,可以按照以下步骤进行:
下载 Gradle:下载地址
在这里插入图片描述

  1. 访问 Gradle 官网下载页面,选择最新版本的 Gradle,下载对应的压缩包(例如 .zip 或 .tar.gz)。
    解压 Gradle:

  2. 解压下载的压缩包到你选择的目录。

  3. 配置环境变量
    在 Windows 系统中,设置系统环境变量 GRADLE_HOME 指向 Gradle 的安装目录,并将 %GRADLE_HOME%\bin 添加到系统 PATH 变量中。

设置系统环境变量GRADLE_HOME
在这里插入图片描述
添加到系统 PATH:
在这里插入图片描述

  1. 验证安装:
    打开命令行,输入 gradle -v,如果显示 Gradle 的版本信息,则说明安装成功。在这里插入图片描述

创建和配置 Gradle 项目

现在,让我们创建一个简单的 Java 项目,并使用 Gradle 进行配置和管理。
IntelliJ IDEA 提供了良好的 Gradle 支持,让我们结合实际操作,演示如何创建和配置一个简单的 Java 项目,并使用 Gradle 构建和运行项目。

  1. 创建 Gradle 项目:

打开 IntelliJ IDEA,选择 File -> New -> Project。
在弹出的窗口中,选择 Gradle,然后点击 Next。
在这里插入图片描述
在这里插入图片描述

  1. IntelliJ IDEA 将会自动创建一个基本的 build.gradle 文件,你可以在此文件中配置项目依赖、插件和任务。

build.gradle:

plugins {id 'java'
}group 'com.ruofei'
version '1.0-SNAPSHOT'repositories {mavenCentral()
}dependencies {implementation 'com.google.guava:guava:30.1.1-jre'testCompile group: 'junit', name: 'junit', version: '4.12'
}

在这里插入图片描述
点击run导入依赖
在这里插入图片描述

  1. 测试代码
    测试导入一个google的包
package com.ruofei;import com.google.common.collect.ImmutableList;public class App {public static void main(String[] args) {ImmutableList<String> list = ImmutableList.of("Hello", "Gradle");System.out.println("Greetings from Gradle: " + list);}
}
  1. 构建项目:

    在 IntelliJ IDEA 的右侧 Gradle 工具窗口中,展开你的项目,找到 Tasks -> build,双击运行构建任务。在这里插入图片描述

  2. 运行项目
    在这里插入图片描述

将 Gradle 项目打成jar包

  1. 修改build.gradle
    在build.gradle中添加:
// 配置 JAR 打包任务
jar {manifest {attributes('Main-Class': 'com.ruofei.App' // 修改为你的主类)}// 如果需要包含资源文件或其他目录,可以通过以下方式配置// 包含依赖项from {configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) }}
}
  1. 右侧gradle目录点击build
    在/build/libs/ 目录下生成相应的jar包,可以直接java -jar 执行
    在这里插入图片描述
    在这里插入图片描述

多项目聚合

演示一个简单的示例,主项目为一个 Java 应用程序,包含两个子项目:一个是 Java 库项目,另一个是 Java 应用程序项目。我们将展示如何设置和管理这些项目的依赖关系和构建过程。

示例项目结构

  • 主项目: multi-project-demo
    • 子项目1: library
      • 提供一些工具类和服务
    • 子项目2: application
      • 使用 library 子项目的功能来创建一个应用程序

步骤详解

1. 创建主项目
首先,在 IntelliJ IDEA 中创建一个新的 Gradle 项目作为主项目 multi-project-demo。
1. 打开 IntelliJ IDEA,选择 File -> New -> Project
2. 选择 Gradle 作为项目类型,点击 Next
3. 输入项目名称为 multi-project-demo,选择存储路径,点击 Next
4. 选择 Java,点击 Next
5. 最后点击 Finish 完成项目的创建。
在这里插入图片描述
2. 添加子项目 library
接下来,我们将添加第一个子项目 library 到主项目中。
1. 在 IntelliJ IDEA 的主项目 multi-project-demo 中,右键点击主项目的根目录,选择 New -> Module
2. 选择 Gradle,点击 Next
3. 输入子项目的名称为 library,选择存储路径,点击 Finish
在这里插入图片描述
3. 添加子项目 application
然后,我们再添加第二个子项目 application。
1. 在 IntelliJ IDEA 的主项目 multi-project-demo 中,右键点击主项目的根目录,选择 New -> Module
2. 选择 Gradle,点击 Next
3. 输入子项目的名称为 application,选择存储路径,点击 Finish
4. 子项目 application的build.gradle中添加对lib项目的依赖:

build.gradle:

plugins {id 'java'
}group 'org.example'
version '1.0-SNAPSHOT'repositories {mavenCentral()
}dependencies {testCompile group: 'junit', name: 'junit', version: '4.12'implementation project(':library')
}

在这里插入图片描述
4. 配置 settings.gradle
现在,我们需要在主项目的 settings.gradle 文件中声明这两个子项目。
1. 打开 multi-project-demo 主项目的根目录。
2. 打开或者创建 settings.gradle 文件。
3. 在文件中添加以下内容(可能已经默认添加了):

include 'library'
include 'application'

这样就声明了 library 和 application 两个子项目。

5. 配置主项目 build.gradle
在主项目的 build.gradle 文件中配置主项目和所有子项目的依赖关系和其他设置。

plugins {id 'java'
}group 'org.example'
version '1.0-SNAPSHOT'repositories {mavenCentral()
}dependencies {testCompile group: 'junit', name: 'junit', version: '4.12'
}// 子项目配置
subprojects {// 应用 Java 插件apply plugin: 'java'// 配置项目依赖关系和版本控制dependencies {// 这里可以添加主项目的通用依赖// 例如:implementation 'com.google.guava:guava:30.1-jre'}// 所有子项目共享的配置configure([JavaCompile, Test]) {// 这里可以配置所有 Java 编译和测试任务的共享设置sourceCompatibility = JavaVersion.VERSION_1_8targetCompatibility = JavaVersion.VERSION_1_8}
}// 主项目特有的配置

在这个示例中:

  • 主项目应用了 java 插件,确保项目可以编译和运行 Java 代码。
  • 使用 subprojects 块配置了所有子项目共享的配置。

6. 编写和运行子项目代码
现在我们可以在每个子项目中编写代码,并且可以在 IntelliJ IDEA 中构建和运行它们。

例如,在 library 子项目中创建一个简单的 Java 类:

public class Library {public void greet() {System.out.println("Hello from Library!");}
}

在 application 子项目中使用 library 子项目的功能:

package com.example;public class App {public static void main(String[] args) {Library library = new Library();library.greet();}
}

7. 构建和运行子项目
在 IntelliJ IDEA 的 Gradle 工具窗口中,可以看到主项目和所有子项目。你可以双击每个子项目的任务(如 build 等),Gradle 将会执行这些任务。

对于 library 子项目,可以运行 build 任务来编译和打包库。
对于 application 子项目,可以运行 run 任务来运行应用程序。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/394496.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】库操作,数据类型

目录 MySQL简介SQL语句分类库操作语句展示数据库创建数据库使用数据库删除数据库 数据类型整型浮点型字符串日期类型 MySQL简介 数据库有关系型数据库和非关系型数据库。 关系型数据库&#xff1a;是指采用了关系模型来组织数据的数据库。 简单来说&#xff0c;关系模型指的就…

智能化的Facebook未来:AI如何重塑社交网络的面貌?

随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;社交网络的面貌正在经历深刻的变革。Facebook&#xff08;现Meta Platforms&#xff09;作为全球最大的社交媒体平台之一&#xff0c;正积极探索如何利用AI技术来提升用户体验、优化内容管理并推动平台创新。…

线上预约陪诊平台医院陪诊系统源码就医陪护小程序APP开发

项目分析 随着医疗行业的数字化转型和人们对健康需求的日益增长&#xff0c;线上预约陪诊系统作为一种新兴的医疗服务模式&#xff0c;正逐渐受到市场的关注和认可。本文将从市场前景、使用人群、盈利模式以及竞品分析等多个角度&#xff0c;全面探讨线上预约陪诊系统的技术性…

【稳定ACM出版、EI检索|武汉场线上线下结合】2024年第五届医学人工智能国际学术会议(ISAIMS 2024,8月13-17)

第五届医学人工智能国际学术会议&#xff08;ISAIMS2024&#xff09;将于2024年8月13-17日于荷兰阿姆斯特丹自由大学召开&#xff0c;国内分会场将于2024年10月25-27日于中国武汉召开。 本届会议将继续围绕人工智能在医学领域的最新研究成果&#xff0c;为来自国内外高等院校、…

反转链表(LeetCode)

题目 给你单链表的头节点&#xff0c;请你反转链表&#xff0c;并返回反转后的链表 解题 class ListNode:def __init__(self, value0, nextNone):self.value valueself.next nextdef reverse_linked_list_recursive(head: ListNode) -> ListNode:# 空链表或单节点链表if …

计算机网络-传输层

网络层不具有重传&#xff0c;需要传输层来控制。 Tcp&#xff1a;需要将传输的数据进行分段传输&#xff0c;并且能够建立会话&#xff0c;具备流量控制&#xff0c;是一种可靠的传输协议UDP&#xff1a;一个数据包就能完成数据通信&#xff0c;不分段&#xff0c;不需要建立…

人工智能|人工智能教育的发展现状及趋势

智能的热潮正席卷全球。国家在人工智能领域展开战略布局&#xff0c;人工智能人才成为国家急需的高层次技术人才。据领英发布的《全球 Al 领域人才报告》显示&#xff0c;国内人工智能人才缺口达到 500 多万。 毫无疑问&#xff0c;人工智能将不可阻挡地影响所有产业。给自己一…

【数据结构】线性表(线性表的定义和基本操作)

计算机考研408-数据结构笔记本之——第二章 线性表 2.1 线性表的定义和基本操作 1 线性表的定义(数据结构三要素——逻辑结构&#xff09; 线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列. 其中n为表长&#xff0c;当n0 时线性表是一个空表。 若用L命名线性表&…

【C++】:智能指针 -- RAII思想shared_ptr剖析

目录 一&#xff0c;内存泄漏二&#xff0c;智能指针的使用及原理2.1 RAII思想2.2 auto_ptr2.3 unique_ptr 三&#xff0c;shared_ptr(重点)3.1 shared_ptr的原理及使用3.2 shared_ptr的模拟实现1. 基本框架2. 引用计数的设计3. 拷贝构造4. 析构函数5. 赋值拷贝 3.3 shared_ptr…

详解Xilinx FPGA高速串行收发器GTX/GTP(4)--TX/RX接口的数据位宽和时钟设计

目录 1、时钟设计 2、TX接口 3、接口位宽与时钟的关系 4、时钟来源方案 5、TX端内部的时钟分频设计 6、RX接口 文章总目录点这里:《FPGA接口与协议》专栏的说明与导航 1、时钟设计 GT收发器内部比较复杂,所使用的时钟就不止一个,比较主要的时钟有两个,架构…

Zookeeper的监听机制及原理解析

系列文章目录 手把手教你安装Zookeeper 及可视化插件ZooInspector、ZKUI Zookeeper入门篇&#xff0c;了解ZK存储特点 使用Zookeeper的监听及原理解析 系列文章目录前言一、监听机制的基本概念二、Zookeeper监听原理1. 事件类型2. 监听模式与监听器类型&#xff08;1&#xff…

健康管理系统

目录 第1章 系统概述 第2章 可行性研究 2.1 项目背景及意义 2.2 可行性研究 第3章 需求分析 3.1 功能性需求 3.2 非功能性需求 3.2.1 性能需求 第4章 总体设计 4.1 技术架构 4.2功能模块设计 第5章 详细设计 5.1 主页 5.2 写剧本杀 5.3 剧本杀分类管理 5.4 个人…

数组下标越界异常(ArrayIndexOutOfBoundsException)以及解决方案

在Java学习的初期&#xff0c;我们往往可能会遇到一些程序的错误提示&#xff0c;告诉我们&#xff0c;程序出现了某些不正常的情况&#xff0c;在这种情况发生时&#xff0c;我们一般称之为出现了异常。 我们目前有两类常见的错误&#xff1a; 一个是编译时异常 &#xff0c…

数据分析与应用:微信-情人节红包流向探索分析

目录 0 需求描述 1 红包发送方用户的基本信息缺失率有多高?(即有多少红包发送方用户无法在用户基本信息表中匹配? 2 哪一组红包金额的拒收率最高? 3、最受二线城市欢迎的红包金额为?(即发出次数最多) 4 北上广深 4 大城市中,哪座城市的男性用户发出的 520 红包比例…

三大口诀不一样的代码,小小的制表符和换行符玩的溜呀

# 小案例&#xff0c;打印输出加法口诀 for i in range(1,10):for j in range(1,10):if j>i:breakprint(f"{j}{i}{ji}".strip(),end\t)print() print(\n) for i in range(1,10):for j in range(1,10):if j>i:breakprint(f"{j}x{i}{j*i}",end\t)print…

计算机毕业设计选题推荐-房屋租赁系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

app逆向抓包技巧:SSL Pinning检测绕过

本篇博客旨在记录学习过程&#xff0c;不可用于商用等其它途径 场景 在charles抓包下&#xff0c;某斑马app在注册时发现点击登录毫无反应&#xff0c;看抓包结果提示SSL handshake with client failed&#xff0c;确定是触发了SSL/TLS Pinning&#xff08;证书锁定&#xff…

【SpringBoot 属性加载机制】

SpringBoot 属性加载 一个 SpringBoot 应用的配置属性可以有多种不同的来源, 比如可以来自操作系统的环境变量, 比如可以来自 application.yaml 文件; 每一种不同的属性来源, 都会被 SpringBoot 封装成一个PropertySource对象, 保存在 Environment 对象的 PropertySources 类型…

数据采集工具之Canal

本文主要介绍canal采集mysql数据的tcp、datahub(kafka)模式如何实现 1、下载canal https://aliyun-datahub.oss-cn-hangzhou.aliyuncs.com/tools/canal.deployer-1.1.5-SNAPSHOT.tar.gz canal的原理类似于mysql的主从复制&#xff0c;canal模拟的是从节点拉取主节点的binlog数…

LeetCode 热题 HOT 100 (015/100)【宇宙最简单版】

【栈】No. 0155 最小栈【中等】&#x1f449;力扣对应题目指路 希望对你有帮助呀&#xff01;&#xff01;&#x1f49c;&#x1f49c; 如有更好理解的思路&#xff0c;欢迎大家留言补充 ~ 一起加油叭 &#x1f4a6; 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&#xff01; …