gradle 订阅
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言。 展开全文
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言。
信息
外文名
gradle
整体设计
以作为一种语言为导向
音    标
[g'reɪdl]
中文名
gradle
基    础
Groovy 语言
服务对象
Java应用
gradle简介
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。 [1] 
收起全文
精华内容
下载资源
问答
  • gradle
    千次阅读
    2022-01-22 19:21:25

    笔记修正记录)2022.1.22

    Gradle需掌握的知识点涵罗列:是什么。如何选择Maven和Gradle。如何使用。 Gradle is a general-purpose build tool。The core model is based on tasks。Gradle has several fixed build phases。.Gradle is extensible in more ways than one。Build scripts operate against an API。
    【Gradle 是什么/简介】Gradle 的核心在于基于 Groovy 的丰富而可扩展的域描述语言(DSL) Groovy 通过声明性的语言元素将基于声明的构建推向下层,你可以按你想要的方式进行组合, 并且,这种声明性的语言是可以扩展的。你可以添加新的或增强现有的语言元素。Gradle 自带了很多插件,Java plugin 作为其中之一,为你提供了诸如编译,测试,打包等一些功能。Java 插件为工程定义了许多默认值。Gradle runs on the JVM you can use the standard Java APIs in your build logic, such as custom task types and plugins.
    【Gradle的Task】Task是什么/用来做什么,
    【如何编写Task、Task基本语法】Tasks themselves consist of: Actions、Inputs、Outputs 。They are optional depending on what the task needs to do
    【学习Gradle现存疑问】??task是要写在build.gradle。task copy好像要用from into关键字。task语法疑惑,task代码块括号中type和depends on?? 这个type和depends on撒意思.Gradle 文档中,Copy或Zip文档部分的properties 和method啥意思。如何依据文档,写出一个
    【build.gradle文件】:build.gradle 文件中都写啥:task,dependencies、plugins,repositories、sourceSets。build scripts describe what steps are needed to build the software, not how those steps should do the work. That’s a job for custom task types and plugins. build scripts can also use the standard Java API.
    settings.gradle
    【Gradle插件】Gradle java插件:Java插件是构建JVM项目的基础,它为项目增加了很多能力,例如编译,测试,打包,发布
    【idea中使用Gradle】idea官网Gradle教程https://www.jetbrains.com/help/idea/gradle.html
    创建project时选择Gradle。build.gradle文件和settings.gradle。idea右侧的Gradle工具栏。
    【Gradle依赖管理】参考官网
    【Gradle基本插件】(Gradle base plugin) Gradle base plugin是干啥的:The Base Plugin provides some tasks and conventions that are common to most builds and adds a structure to the build that promotes consistency in how they are run. Its most significant contribution is a set of lifecycle tasks that act as an umbrella for the more specific tasks provided by other plugins and build authors.
    【Gradle如何构建项目】三个阶段Initialization、Configuration、Execution.Gradle models its builds as Directed Acyclic Graphs (DAGs) of tasks (units of work). Once the task graph has been created, Gradle determines which tasks need to be run in which order and then proceeds to execute them.Almost any build process can be modeled as a graph of tasks in this way。task graph can be defined by both plugins and your own build scripts, with tasks linked together via the task dependency mechanism.You choose which task to run. Save time by specifying the task that does what you need, but no more than that. If you just want to run the unit tests, choose the task that does that — typically test. If you want to package an application, most builds have an assemble task for that. 构建项目的本质:a build essentially configures a set of tasks and wires them together — based on their dependencies。
    Gradle 命令行的基本使用
    什么时候用Gradle而不是Maven:大型项目
    Maven迁移到Gradle。

    更多相关内容
  • gradle的如下版本gradle-5.6.4-all.rar gradle的如下版本gradle-5.6.4-all.rar gradle的如下版本gradle-5.6.4-all.rar gradle的如下版本gradle-5.6.4-all.rar gradle的如下版本gradle-5.6.4-all.rar gradle的如下...
  • gradle-6.5-all.zip 离线包下载.zip。官网下载不成功的,嫌官网下载速度慢的,可以直接在这里下载
  • kordamp-gradle-plugins:Gradle插件集合
  • Gradle-5.6.4这个版本的特点是改进了Groovy的编译速度,为Java测试夹具提供了一个新的插件,并在多项目构建中更好地管理插件版本。
  • gradle-6.6-all.zip

    2020-08-12 18:11:54
    gradle-6.6-all.zip 解决gradle下载过慢的问题。下载下来之后,直接解压,将压缩包拷贝到相应目录即可
  • androidstudio gradle文件下载,下载地址:https://downloads.gradle-dn.com/distributions/gradle-5.4.1-all.zip,其他版本直接改版本号,因为as自动下载太慢,所以建议手动下载解压覆盖
  • Android studio编译工具,gradle离线包下载资源,由于在线下载速度比较缓慢,故搬运分享,需要的小伙伴请下载。合集包含1.7之后的所有版本,会做不定期更新,保证gradle版本为最新版本。 专辑链接:...
  • Android Gradle3.0 - 4.0共12个版本的gradle gradle-3.0-all.zip gradle-3.1-all.zip gradle-3.2.1-all.zip gradle-3.2-all.zip gradle-3.3-all.zip gradle-3.4.1-all.zip gradle-3.4-all.zip gradle-3.5.1-all.zip ...
  • gradle-4.6-all.zip

    2018-12-04 19:11:32
    放到.gradle目类下的wrapper/dists/gradle-4.6-all/xxxxxxxx/的目录下
  • 适合于系统学习Android Gradle知识。特别适合初学者。
  • Android Gradle4.1 - 4.6共10个版本的gradle: gradle-4.1-all.zip gradle-4.2.1-all.zip gradle-4.2-all.zip gradle-4.3.1-all.zip gradle-4.3-all.zip gradle-4.4.1-all.zip gradle-4.4-all.zip gradle-4.5.1-all....
  • gradle-6.1.1-all.zip

    2020-07-30 02:41:53
    gradle6.1.1 现在缓慢 1.检查jdk是否已经安装 需要 1.8 2.环境变量中增加名为GRADLE_HOME的变量名,值为...5.修改默认缓存目录 修改Gradle默认缓存目录可使用命令gradle -g 目录路径,例如gradle -g D:\Gradle\.gradle
  • gradle-构建及配置

    2017-01-14 22:17:48
    gradle-构建及配置 //gradle.properties 文件作为全局设置 GRADLE_HOME_USER/.gradle/目录下 //init.gradle gradle仓库全局设置 GRADLE_HOME_USER/.gradle/目录下
  • gradle-5.5.1-all.zip

    2020-10-08 14:01:42
    gradle配置信息gradle配置信息gradle配置信息gradle配置信息gradle配置信息gradle配置信息gradle配置信息gradle配置信息gradle配置信息gradle配置信息gradle配置信息gradle配置信息gradle配置信息gradle配置信息...
  • Android Studio Gradle离线包下载,其中包含:gradle-1.10-all.zip; gradle-1.11-all.zip; gradle-2.0-all.zip; gradle-2.2.1-all.zip; gradle-2.2-all.zip; gradle-2.3-all.zip;gradle-2.10-all.zip; gradle-...
  • 官网下载不成功的,嫌官网下载速度慢的,可以直接在这里下载。 官网原下载地址:https://services.gradle.org/distributions/
  • Gradle 入门

    千次阅读 2022-07-09 23:35:12
    Gradle 是一款 Google 推出的基于JVM、通用灵活的项目构建工具,支持 Maven,JCenter 多种第三方仓库;支持传递性 依赖管理、废弃了繁杂的 xml 文件,转而使用简洁的、支持多种语言(例如:java、groovy 等)的 build ...

    1、Gradle 入门

    1.1 Gradle 简介

    Gradle 是一款 Google 推出的基于JVM、通用灵活的项目构建工具,支持 Maven,JCenter 多种第三方仓库;支持传递性 依赖管理、废弃了繁杂的 xml 文件,转而使用简洁的、支持多种语言(例如:java、groovy 等)的 build 脚本文件

    官网地址

    在这里插入图片描述

    Gradle有用吗?

    1. 目前已经有相当一部分公司在逐渐使用Gradle作为项目构建工具了
    2. 作为Java开发程序员,如果想下载Spring、SpringBoot等Spring家族的源码,基本上基于Gradle构建的

    虽然目前市面上常见的项目构建工具有 Ant、Maven、Gradle,主流还是 Maven,但是未来趋势 Gradle

    1.2 常见的项目构建工具

    Ant: 2000 年 Apache 推出的纯 Java 编写构建工具,通过 xml[build.xml]文件管理项目 优点:使用灵活,速度快(快于 gradle 和 maven), 缺点:Ant 没有强加任何编码约定的项目目录结构,开发人员需编写繁杂 XML 文件构建指令,对开发人员是一个挑战.

    Maven: 2004 年 Apache 组织推出的再次使用 xml 文件[pom.xml]管理项目的构建工具。 优点: 遵循一套约定大于配置的项目目录结构,使用统一的 GAV 坐标进行依赖管理,侧重于包管理。 缺点:项目构建过程僵化,配置文件编写不够灵活、不方便自定义组件,构建速度慢于 gradle。

    Gradle: 2012 年 Google 推出的基于 Groovy 语言的全新项目构建工具,集合了 Ant 和 Maven 各自的优势。 优点:集 Ant 脚本的灵活性+Maven 约定大于配置的项目目录优势,支持多种远程仓库和插件,侧重于大项目构建。 缺点:学习成本高、资料少、脚本灵活、版本兼容性差等。

    在这里插入图片描述

    1.3 Gradle 安装

    SpringBoot 官方文档明确指出: Spring Boot的Gradle插件需要Gradle 6.8, 6.9或7.x 查看

    在这里插入图片描述

    其中 SpringBoot 与 Gradle 存在版本兼容问题,Gradle 与 Idea 也存在兼容问题,所以考虑到 java 程序员会使用 SpringBoot, 所以要选择 6.8 版本及高于 6.8 版本的 Gradle,那么相应的 idea 版本也要升级,不能太老.

    通过idea安装根目录plugins\gradle\lib查看idea对应Gradle版本

    1.3.1安装Gradle

    安装Gradle需要安装jdk8或以上版本的jdk

    下载Gradle并解压

    在这里插入图片描述

    1.3.2配置环境变量

    在这里插入图片描述

    接着再配置一个 GRALE_USER_HOME 环境变量:

    GRALE_USER_HOME 相当于配置 Gradle 本地仓库位置和 Gradle Wrapper 缓存目录。所以我这里直接配置的maven仓库路径

    1.4 检测是否安装成功

    gradle -v 或者 gradle --version: 通过gradle -v或者 gradle --version检测是否安装成功

    在这里插入图片描述

    1.5 Gradle 项目目录结构

    Gradle 项目默认目录结构和 Maven 项目的目录结构一致,都是基于约定大于配置。 其完整项目目录结构如下所示:

    在这里插入图片描述

    1. 只有war工程才有webapp目录,对于普通的jar工程并没有webapp目录
    2. gradlew与gradlew.bat执行的指定wrapper版本中的gradle指令,不是本地安装的gradle指令。

    1.6 Gradle 中的常用指令

    常用Gradle指令作用
    gradle clean清楚build目录
    gradle classes编译业务代码和配置文件
    gradle test编译测试代码,生成测试报告
    gradle build构建项目
    gradle build -x test跳过测试,构建

    1.7 修改 maven 下载源

    认识 init.d 文件夹

    我们可以在 gradle 的 init.d 目录下创建以.gradle 结尾的文件,.gradle 文件可以实现在 build 开始之前执行,所以你可以在 这个文件配置一些你想预先加载的操作。

    在 init.d 文件夹创建 init.gradle 文件

    allprojects { 
        repositories { 
            mavenLocal() 
            maven{name "Alibaba" ; url "https://maven.aliyun.com/repository/public" } 
    		maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" } 
    		mavenCentral() 
        }
        buildscript { 
            repositories { 
                maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public'} 
    			maven { name "Bstek" ; url 'https://nexus.bsdn.org/content/groups/public'} 
    			maven { name "M2" ; url 'https://plugins.gradle.org/m2/' } 
            } 
        }             
    }
    

    启用 init.gradle 文件的方法有:

    1. 在命令行指定文件,例如:gradle --init-script yourdir/init.gradle -q taskName。你可以多次输入此命令来指定多个init文件
    2. 把init.gradle文件放到 USER_HOME/.gradle/ 目录下
    3. 把以.gradle结尾的文件放到 USER_HOME/.gradle/init.d/ 目录下
    4. 把以.gradle结尾的文件放到 GRADLE_HOME/init.d/ 目录下 如果存在上面的4种方式的2种以上,gradle会按上面的1-4序号依次执行这些文件,如果给定目录下存在多个init脚本,会 按拼音a-z顺序执行这些脚本,每个init脚本都存在一个对应的gradle实例,你在这个文件中调用的所有方法和属性,都会 委托给这个gradle实例,每个init脚本都实现了Script接口。

    仓库地址说明
    使用M2_HOME()需要配置M2_HOME环境变量,值为maven根目录

    mavenLocal(): 指定使用maven本地仓库,而本地仓库在配置maven时settings文件指定的仓库位置。如E:/repository,gradle 查找jar包顺序如下:USER_HOME/.m2/settings.xml >> M2_HOME/conf/settings.xml >> USER_HOME/.m2/repository

    maven { url 地址},指定maven仓库,一般用私有仓库地址或其它的第三方库【比如阿里镜像仓库地址】。 mavenCentral():这是Maven的中央仓库,无需配置,直接声明就可以使用。 jcenter():JCenter中央仓库,实际也是是用的maven搭建的,但相比Maven仓库更友好,通过CDN分发,并且支持https访 问,在新版本中已经废弃了,替换为了mavenCentral()。

    总之, gradle可以通过指定仓库地址为本地maven仓库地址和远程仓库地址相结合的方式,避免每次都会去远程仓库下载 依赖库。这种方式也有一定的问题,如果本地maven仓库有这个依赖,就会从直接加载本地依赖,如果本地仓库没有该 依赖,那么还是会从远程下载。但是下载的jar不是存储在本地maven仓库中,而是放在自己的缓存目录中,默认在 USER_HOME/.gradle/caches目录,当然如果我们配置过GRADLE_USER_HOME环境变量,则会放在 GRADLE_USER_HOME/caches目录,那么可不可以将gradle caches指向maven repository。我们说这是不行的,caches下载 文件不是按照maven仓库中存放的方式。

    阿里云仓库地址参考

    1.8 Wrapper 包装器

    Gradle Wrapper 实际上就是对 Gradle 的一层包装,用于解决实际开发中可能会遇到的不同的项目需要不同版本的 Gradle

    例如: 把自己的代码共享给其他人使用

    1. 对方电脑没有安装 gradle
    2. 对方电脑安装过 gradle,但是版本太旧了

    这时候,我们就可以考虑使用 Gradle Wrapper 了。这也是官方建议使用 Gradle Wrapper 的原因。实际上有了 Gradle Wrapper 之后,我们本地是可以不配置 Gradle 的,下载 Gradle 项目后,使用 gradle 项目自带的 wrapper 操作也是可以的。

    如何使用 Gradle Wrapper?

    项目中的gradlew、gradlew.cmd脚本用的就是wrapper中规定的gradle版本。
    而我们上面提到的gradle指令用的是本地gradle,所以gradle指令和gradlew指令所使用的gradle版本有可能是不一样的。 gradlew、gradlew.cmd的使用方式与gradle使用方式完全一致,只不过把gradle指令换成了gradlew指令。

    我们也可在终端执行 gradlew 指令时,指定指定一些参数,来控制 Wrapper 的生成,比如依赖的版本等

    参数名说明
    –gradle-version用于指定使用的Gradle版本
    –gradle-distribution-url用于指定下载Gradle发行版的url地址

    例如:

    gradle wrapper --gradle-version=4.4:升级wrapper版本号,只是修改gradle.properties中wrapper版本,未实际下载
    gradle wrapper --gradle-version 5.2.1 --distribution-type all :关联源码用

    GradleWrapper 的执行流程:

    1.当我们第一次执行 ./gradlew build 命令的时候,gradlew 会读取 gradle-wrapper.properties 文件的配置信息
    2.准确的将指定版本的 gradle 下载并解压到指定的位置(GRADLE_USER_HOME目录下的wrapper/dists目录中)
    3.并构建本地缓存(GRADLE_USER_HOME目录下的caches目录中),下载再使用相同版本的gradle就不用下载了
    4.之后执行的 ./gradlew 所有命令都是使用指定的 gradle 版本。

    在这里插入图片描述

    gradle-wrapper.properties 文件解读:

    字段名说明
    distributionBase下载的Gradle压缩包解压后存储的主目录
    distributionPath相对于distributionBase的解压后的Gradle压缩包的路径
    zipStoreBase同distributionBase,只不过是存放zip压缩包的
    zipStroePath同distributionPath,只不过是存放zip压缩包的
    distributionUrlGradle发行版压缩包的下载地址

    注意: 前面提到的 GRALE_USER_HOME 环境变量用于这里的 Gradle Wrapper 下载的特定版本的 gradle 存储目录。如 果我们没有配置过 GRALE_USER_HOME 环境变量,默认在当前用户家目录下的.gradle 文件夹中

    什么时候选择使用 gradle wrapper、什么时候选择使用本地 gradle?

    le Wrapper 下载的特定版本的 gradle 存储目录。如 果我们没有配置过 GRALE_USER_HOME 环境变量,默认在当前用户家目录下的.gradle 文件夹中

    什么时候选择使用 gradle wrapper、什么时候选择使用本地 gradle?

    下载别人的项目或者使用操作以前自己写的不同版本的gradle项目时:用Gradle wrapper,也即:gradlew 什么时候使用本地gradle?新建一个项目时: 使用gradle指令即可。

    展开全文
  • gradle-5.0.zip

    2020-09-29 15:42:51
    gradle-5.0.zip gradle-5.0.zip gradle-5.0.zip gradle-5.0.zip
  • Gradle3.3-all.zip

    2017-10-26 11:00:43
    官网下载慢的可以用这个, 最低分下载。解压之后放在相应的目录下即可
  • gradle-3.5-all.zip 官方绿色版

    千次下载 热门讨论 2017-04-13 22:33:02
    官网下载不成功的,或者嫌官网下载速度慢的,可以直接在这里下载。 官网原下载地址:https://services.gradle.org/distributions/
  • gradle in action

    热门讨论 2014-04-05 17:15:03
    Gradle in action 正式版 Part 1: Introducing Gradle Chapter 1. Introduction to project automation Chapter 2. Next-generation builds with Gradle Chapter 3. Building a Gradle project by example Part 2...
  • 实战Gradle_中文完整版.pdf
  • gradle-6.5.1-all.zip

    2020-07-17 23:27:13
    官网下载不成功的,可以直接在这里下载。 官网原下载地址:https://gradle.org/releases/
  • gradle-4.1-all.zip

    2020-09-29 15:58:22
    gradle-4.1-all.zip gradle-4.1-all.zip gradle-4.1-all.zip gradle-4.1-all.zip
  • gradle-3.3-bin.zip

    千次下载 热门讨论 2017-01-07 17:02:22
    官网下载不成功的,可以直接在这里下载。 官网原下载地址:https://services.gradle.org/distributions/
  • gradle-6.2.2-all.zip

    2020-03-09 16:10:15
    Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。 此资源为gradle-6.2.2压缩包,用于下载共享,release官方下载地址http://services.gradle.org/distributions/
  • 相信学习Java的小伙伴,目前项目中用得最多的两种构建依赖构建方式分别是Maven,两一种是Gradle,至于哪种日出冲天,哪种日薄西山,这个说不准,实际两种都使用得挺多的,只不过Maven会出得早一些,而Gradle是...
    ❤️‍大家好,我是贾斯汀,欢迎进来学习啦~❤️‍

    【学习背景】

    相信做过实际项目或者学过项目的小伙伴,都听说过依赖构建工具,目前项目中用得最多的两种构建依赖构建方式分别是MavenGradle,至于哪种日出冲天,哪种日薄西山,这个说不准,我觉得现在实际上两种都使用得挺多的,只不过Maven出道得早一些,而Gradle是后起之秀,今天就来介绍一下这个后起之秀Gralde的使用,主要基于Spring Boot官方提供的gradle demo进行说明,将教你如何快速上手一个Gradle工程,并根据实际需要进行单模块的配置以及多模块的配置,甚至是定制化多模块的配置方案,希望对你有所帮助,如果有疑问,记得在评论区留言~
    在这里插入图片描述

    进入正文~


    一、单模块

    1.1 生成demo

    直接通过SpringBoot官方快速创建一个demo工程 https://start.spring.io/
    在这里插入图片描述

    将demo工程导入IDEA或Eclipse等集成开发工具,得到的结构大致如下

    demo
    ├─src
    ├─build.gradle
    ├─settings.gradle
    

    在这里插入图片描述

    1.2 gradle配置说明

    关于Gradle依赖构建,我们主要关注build.gradlesettings.gradle这两个配置,配置说明如下:
    settings.gradle

    //Gradle工程名
    rootProject.name = 'demo'
    
    

    build.gradle配置内容及说明:

    //依赖的插件
    plugins {
    	id 'org.springframework.boot' version '2.5.4'
    	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    	id 'java'
    }
    //组名(前缀包名)
    group = 'com.example'
    //工程版本号(这里去掉-SNAPSHOT)
    version = '0.0.1'
    //JDK版本
    sourceCompatibility = '1.8'
    
    //全局仓库
    repositories {
    	//maven仓库中心
    	mavenCentral()
    }
    
    dependencies {
    	//依赖正式架包
    	implementation 'org.springframework.boot:spring-boot-starter'
    	//依赖测试架包(正式构建时不会加入到依赖中)
    	testImplementation 'org.springframework.boot:spring-boot-starter-test'
    }
    
    test {
    	//Junit测试,Gradle 4.6及以上版本,加入该配置即自动支持
    	useJUnitPlatform()
    }
    

    1.3 构建demo

    完成Gradle的build.gradlesettings.gradle两个配置之后,接下来开始进行构建生成架包
    如果没配置Gradle配置的,可以先安装Gradle(下载地址https://gradle.org/releases/)并配置一下,配置为 File -> Settings -> Build, Execution, Deployment -> Build Tools - Gradle
    在这里插入图片描述
    展开右侧Gradle视图栏,进行构建得到demo-0.0.1-plain.jar架包
    在这里插入图片描述

    二、传统多模块(多配置)

    现在实际的很多工程,一般不只是单个工程单模块,很多都是需要配置多模块的,比较传统的方式是直接添加各个子模块,每一个子模块对应一个build.gradle配置,比较简单,但是配置可能会比较冗余,网上很少有说明怎么整合多模块的配置到一个build.gradle里面的教程,下一章会进行介绍并给出定制化的方案

    2.1 添加子模块

    直接基于上面Springboot生成的demo主工程,添加三个子模块
    结构预览

    demo
      ├─app_common
      │  └─build.gradle
      ├─app_one
      │  └─build.gradle
      ├─app_two
      │  └─build.gradle
    ├─build.gradle
    ├─settings.gradle
    

    这种多模块创建方式比较简单,直接选中根目录demo,右键选择 New -> Module…
    在这里插入图片描述
    选中Gradle -> Java -> Next
    在这里插入图片描述
    命名要添加的子模块名称、填写GroupId/ArtifactId/Version三要素 -> Finish:
    在这里插入图片描述
    同理,将app_one、app_two另外两个子模块也创建出来即可

    最终得到的工程结构如下图所示:
    在这里插入图片描述
    每一个子模块下的build.gradle跟主模块的结构是一样的
    例如app_common/build.gradle配置如下:

    plugins {
        id 'java'
    }
    
    group 'com.example'
    version '0.0.1'
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
        testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
    }
    
    test {
        useJUnitPlatform()
    }
    

    主模块下的settings.gradle主要负载依赖其他子模块:

    rootProject.name = 'demo'
    include 'app_common'
    include 'app_one'
    include 'app_two'
    

    2.2 构建单模块

    同样的,完成多个子模块的创建后,测试一下Gradle构建单个模块是否正常
    展开右边的Gradle -> app_common -> Tasks -> build -> jar,双击执行即可完成单模块的构建
    在这里插入图片描述
    最终得到app_common-0.0.1.jar单个构建包,一般生成在build的相关目录下:
    在这里插入图片描述

    2.3 构建多模块

    也可以Gradle同时构建多个模块
    展开右边的Gradle -> build -> jar,双击执行即可完成多模块的同时构建
    在这里插入图片描述

    三、定制多模块(单配置)

    3.1 定制化说明

    可以看到前面传统的多模块虽然创建简单,不过每一个子模块都需要维护一个build.gradle配置,对于实际应用来说,可能会比较繁琐了,因此可以考虑将多个子模块的配置整合到一个配置里面,这里本文做了一个定制化的配置,除了原有的build.gradlesettings.gradle两个配置文件之外,还新建了另外一个dependencies.gradle以及自定义template目录下相关的脚本

    结构预览

    springboot-gradle-demo
      ├─template
        ├─gradle
    	  ├─v1
    		├─build_java.gradle //bootjar、jar、war等构建方式定义
    		├─buildscript.gradle //统一加载需要的插件
    		├─functions.gradle //gralde定制化主函数配置
    		├─junit.gradle //单元测试依赖的jdk版本、源码目录等
      ├─app_common
      ├─app_one
      ├─app_two
    ├─build.gradle //仓库定义、引用外部函数、插件以及依赖各个子模块定制化等
    ├─dependencies.gradle //根据名字可以看出主要用来进行依赖jar包用途
    ├─settings.gradle //主模块及子模块之间的include依赖
    

    3.2 定制化配置

    核心配置文件build.gradle、dependencies.gradle、settings.gradle及template配置内容及用途说明如下:
    (1)settings.gradle配置及说明:

    //Gradle主工程名
    rootProject.name = 'springboot-gradle-demo'
    
    //Gradle子模块名
    include 'app_common','app_one','app_two'
    

    (2)build.gradle配置及说明:

    //==================定制化1:仓库、编译、插件、公共依赖start==================
    buildscript {
    	//全局声明变量
    	ext {
    		//maven公共仓库
    		maven_public_repo_url="https://maven.aliyun.com/repository/public/"
    
    		//gradle插件中心
    		gradle_repo_url="https://plugins.gradle.org/m2/"
    
    		//maven应用系统私有仓库
    		//maven_private_dev_repo_url="https://maven.aliyun.com/repository/spring/"
    
    		//DEV SNAPSHOTS依赖仓库
    		//maven_snapshots_dev_repo_url="https://oss.sonatype.org/content/repositories/snapshots/"
    
    		//插件目录(放在工程目录下,也可以单独存放到资源服务器,指定访问文件的具体url)
    		template_dir="/template/gradle/v1"
    
    		//编译目录(相对路径)
    		output_dir="build"
    	}
    
    	//全局仓库: 自上而下寻找依赖
    	repositories {
    		//maven本地仓库: 优先加载
    		mavenLocal()
    
    		//maven仓库中心
    		mavenCentral()
    
    		//jcenter仓库中心
    		//jcenter()和mavenCentral()是两个独立的仓库,两者毫无关系,jcenter()有的mavenCentral()可能没有,反之亦然。
    		jcenter()
    
    		//google仓库中心
    		//google()
    
    		//maven远程仓库: 阿里云或公司私服仓库
    		maven {
    			url = maven_public_repo_url
    			url = gradle_repo_url
    			//url = maven_private_dev_repo_url
    			//url = maven_snapshots_dev_repo_url
    		}
    	}
    
    	//全局公共依赖
    	apply from: template_dir+'/buildscript.gradle',to: buildscript
    }
    //==================定制化1:仓库、编译、插件、公共依赖end==================
    
    //Java插件: 未配置时api、implementation无法加载
    plugins {
    	id 'java'
    	id 'java-library'
    }
    
    //==================定制化2:配置构建主入口、全局功能函数start==================
    //自定义全局工具定制化: 自动构建主入口+配置全局功能函数
    apply from: template_dir+'/functions.gradle'
    //==================定制化2:配置构建主入口、全局功能函数end==================
    
    
    //=======================定制化3:gradle子项目模块start=========================
    //common project
    project(':app_common'){
    	apply from: '..'+template_dir+'/build_java.gradle'
    	apply from: '..'+template_dir+'/junit.gradle'
    }
    
    //app_one project
    project(':app_one'){
    	apply from: '..'+template_dir+'/build_java.gradle'
    	apply from: '..'+template_dir+'/junit.gradle'
    }
    
    //app_two project
    project(':app_two'){
    	apply from: '..'+template_dir+'/build_java.gradle'
    	apply from: '..'+template_dir+'/junit.gradle'
    }
    //=======================定制化3:gradle子项目模块end=========================
    
    //=======================定制化4:子项目定义依赖start=========================
    apply from: 'dependencies.gradle'
    //=======================定制化4:子项目定义依赖end=========================
    //setSysSnapshotsRepo
    //待扩展...
    
    
    

    (3)dependencies.gradle配置及说明:

    //========================Gradle工程子模块依赖jar包及版本控制=========================
    //===========参数说明start=========
    //api: 依赖暴露,其他模块都可见
    //implementation: 表示依赖屏蔽,仅自己模块内可见
    //===========参数说明end===========
    
    
    
    //公共子模块依赖定义:app_common
    project(':app_common'){//app_common公共项目子模块: 作为jar工程供其他子模块引用,其他无须重复定义相关jar包
    	dependencies{
    		//依赖仓库jar包
    		api 'org.springframework.boot:spring-boot:2.4.3'
    		api 'org.springframework.boot:spring-boot-starter-web:2.4.3'
    		api 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3'
    		api 'mysql:mysql-connector-java:5.1.47'
    
    		//依赖第三方jar包:指定工程资源lib目录下所有依赖包
    		api fileTree(dir:'src/main/resources/lib',includes: ['*.jar'])
    
    		//引入 mybatis-generator 插件
    		//apply plugin: "com.arenagod.gradle.MybatisGenerator"
    
    		//测试依赖:仅供测试用,仅当前模块生效,不会加载到打包版本中,PS: 根据实际需要定义
    		testImplementation 'junit:junit:4.11'
    	}
    }
    
    //独立子模块依赖定义: app_one
    project(':app_one'){
    	dependencies{
    		//模块依赖: 指定某个模块进行依赖
    		implementation project(':app_common')
    
    		//依赖第三方jar包:指定工程资源lib目录下所有依赖包
    	    compile fileTree(dir:'src/main/resources/lib',includes: ['*.jar'])
    
    		//依赖排除(包级别):exclude的内容将不会被该jar包引用,PS: 根据实际需要定义
    		testImplementation (('org.springframework:spring-test:5.3.3')) {
    			exclude group: 'org.springframework', module: 'mock'
    			exclude group: 'org.springframework', module: 'mock'
    			exclude group: 'org.springframework', module: 'mock'
    			exclude group: 'org.springframework', module: 'mock'
    		}
    
    		//依赖排除(模块级别):exclude的内容将不会被该jar包引用,PS: 根据实际需要定义
    		implementation (project(':app_common')) {
    			exclude group: 'org.springframework', module: 'mock'
    			exclude group: 'org.springframework', module: 'mock'
    			exclude group: 'org.springframework', module: 'mock'
    			exclude group: 'org.springframework', module: 'mock'
    		}
    
    		//测试依赖:仅供测试用,仅当前模块生效,不会加载到打包版本中,PS: 根据实际需要定义
    		testImplementation 'junit:junit:4.11'
    		testImplementation 'org.mybatis.generator:mybatis-generator-core:1.3.7'
    	}
    
    	//依赖排除(全局级别):exclude的内容将不会被该jar包引用,PS: 当要排除的依赖范围很广时,可采用该方式
    	configurations.all {
    		exclude group: 'org.springframework', module: 'spring-core'
    	}
    }
    
    //独立子模块依赖定义: app_two
    project(':app_two'){
    	dependencies{
    		//模块依赖: 指定某个模块进行依赖
    		implementation project(':app_common')
    
    		//依赖第三方jar包:指定工程资源lib目录下所有依赖包
    		compile fileTree(dir:'src/main/resources/lib',includes: ['*.jar'])
    
    		//依赖排除(包级别):exclude的内容将不会被该jar包引用,PS: 根据实际需要定义
    		testImplementation (('org.springframework:spring-test:5.3.3')) {
    			exclude group: 'org.springframework', module: 'mock'
    			exclude group: 'org.springframework', module: 'mock'
    			exclude group: 'org.springframework', module: 'mock'
    			exclude group: 'org.springframework', module: 'mock'
    		}
    
    		//依赖排除(模块级别):exclude的内容将不会被该jar包引用,PS: 根据实际需要定义
    		implementation (project(':app_common')) {
    			exclude group: 'org.springframework', module: 'mock'
    			exclude group: 'org.springframework', module: 'mock'
    			exclude group: 'org.springframework', module: 'mock'
    			exclude group: 'org.springframework', module: 'mock'
    		}
    
    		//测试依赖:仅供测试用,仅当前模块生效,不会加载到打包版本中,PS: 根据实际需要定义
    		testImplementation 'junit:junit:4.11'
    		testImplementation 'org.mybatis.generator:mybatis-generator-core:1.3.7'
    	}
    
    }
    
    
    

    (4)template下的相关组件及函数
    除了template/gradle/v1/functions.gradle这段内容中的包名com.justin需要改成自己的之外,其他可以可以不需要动

    		//deploy package dir of the project (sub-dir of output-dir)
    		setSysPrivateRepo = { sys_id ->
    			allprojects{
    				repositories{
    					maven {
    						url maven_private_dev_repo_url
    						content { includeGroupByRegx "com\\.justin\\."+sys_id+".*" }
    					}
    				}
    			}
    		}
    

    3.3 构建多模块(定制化)

    同样整合了多个子模块的配置进行几种管理之后,跟前面一样,可以通过Gradle视图栏,对多个模块或者单个模块进行构建,生成得到jar、bootjar、war等格式的架包

    在这里插入图片描述

    如果大家有需要将多个模块的配置整合到一个配置里面进行管理的需求,可以根据本文提供的spring-boot-demo示例工程进行修改,来实现自己工程的定制化多模块配置的统一管理~

    最后,附上spring-boot-demo工程的GitHub源码下载地址:https://github.com/JustinJava/springboot-gradle-demo

    或者CSDN下载地址:https://download.csdn.net/download/JustinQin/23279945


    ❤️‍原创不易,觉得有用的小伙伴点亮⭐收藏,支持一下吧!❤️‍

    在这里插入图片描述

    展开全文
  • gradle-5.4.1-all.zip

    2019-10-18 17:59:02
    AndroidStudio gradle-5.4.1版本下载。下载完放到用户目录的的./gradle/wrapper/dists即可

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 414,626
精华内容 165,850
关键字:

gradle