首页 > 其他分享 >Gradle Reference

Gradle Reference

时间:2024-04-12 17:34:29浏览次数:43  
标签:Reference gradle 构建 build https org Gradle

目录

官网:https://gradle.org/

安装

安装过程:https://gradle.org/install/

需要有jdk环境,jdk8以上,java -version验证。兼容性:https://docs.gradle.org/7.6.1/userguide/compatibility.html

手动安装

安装完整版,包含doc和sources,下载安装包:https://gradle.org/releases/ ,gradle-7.6.1-all.zip,解压到D盘

将bin目录配置到系统环境变量path中,gradle -v验证安装成功

其他:

  • 使用gradle wrapper升级
  • 命令行补全

用户手册:https://docs.gradle.org/7.6.1/userguide/userguide.html

介绍

Gradle是开源的自动构建工具,聚焦于灵活性和性能。Gradle脚本是使用Groovy或者Kotlin DSL写的。Gradle features:https://gradle.org/features/

  • 高可定制化:Gradle的建模方式以最基本的方式进行自定义和扩展
  • 快:完成任务快,通过重复利用前一个执行的输出、只处理变化的输入、并行执行
  • 强大:Gradle是Android的官方构建工具,并且支持许多流行的语言和技术

与maven的比较:https://gradle.org/maven-vs-gradle/

使用现有的Gradle builds:开发工具、Gradle命令行接口、Gradle Build Scan https://scans.gradle.com/

Gradle是什么

一个开源的自动化构建工具,足够灵活来构建任何类型的软件,Gradle只做少许的假设,关于你试图构建或如何构建,这让Gradle非常的灵活。

Gradle基于以下基本原则进行设计:

  • 高性能:避免不必要的工作,仅仅执行由于输出输出变化而必要的一些任务,使用各种缓存
  • JVM基础:Gradle运行与JVM之上,对于熟悉java的是一件好事,因为构建逻辑可以使用标准的java api,也利于在不同平台上运行Gradle
  • Conventions:常见的项目类型很容易通过常规构建,插件集默认让构建脚本最小化,但是这些常规并不会限制你:你可以通过配置、添加自己的task、及做其他的定制化
  • 扩展性:大多数构建都需要特殊的构建逻辑,你可以轻而易举的扩展Gradle来提供自己的构建逻辑
  • IDE支持:idea、vscode等
  • Insight:Build Scan提供构建过程中更详细的信息

术语:

  • Projects:是Gradle要构建的东西,它包含一个构建脚本,一般是build.gradle,在项目的根目录下,构建脚本对project定义了tasks, dependencies, plugins, and other configuration。一次构建可以包含一个或多个project,一个project可以包含自己的subproject
  • Tasks:task包含执行工作的逻辑,编译代码、运行测试、部署软件,大多数情况下,一般使用已有的task,Gradle提供了大多数构建系统需要的task,比如java的单元测试,plugins提供了更多类型的任务。
    • task由以下组成:
    • actions:一部分动作,比如拷贝文件、编译代码
    • input:action需要的值、文件、目录
    • outputs:action修改或生成的文件或目录
  • Plugins:plugin允许引入新的概念,不仅仅是task、文件、依赖、配置,比如大多数语言插件都添加的source set的概念到构建中。插件提供了复用的逻辑和配置在跨项目时,通过插件,你可以写一次在多个构建中使用。或者你可以在一个地方存储普通的配置,比如日志、依赖、版本管理。这减少了构建脚本中的重复。通过插件合适的建模构建过程可以很大的提高易用性和效率。
  • Build Phases:Gradle计算和执行构建脚本在三个阶段
    • Initialization:为构建建立环境,并且确定哪个项目参与
    • Configuration:为build创建和配置任务图,基于用户想要执行的任务,确定哪些任务需要执行,以及执行顺序
    • Execution:执行Configuration阶段被选中的任务
  • Builds:build是Gradle项目中一系列任务的一次执行,通过命令行接口执行或者通过ide指定任务选择器执行,Gradle配置这次build并且选择任务进行执行。Gradle基于请求的任务和他们的依赖执行最小的任务集合

快速开始

如果你只是想运行一个存在的Gradle项目,并且项目里有gradle warpper,那么不需要安装Gradle,也即是在根目录下有gradlew或者gradlew.bat,只需要满足前置需求即可(有jdk)。

要创建一个新的build或者添加wrapper到存在的build去,需要安装Gradle

尝试使用Gradle:

  • buidling java application:
    • 创建一个目录,名称为项目名
    • 进入目录,执行执行gradle init
    • 选择application、java、groovy,其他默认即可
  • buidling java library

案例 构建java应用

image

目录说明:

  • gradle目录:放wrapper文件的地方
  • gradlew和gradlew.bat:是Gradle wrapper的启动脚本
  • settings.gradle:这个build的名称和子项目配置文件
  • app/build.gradle:是子项目app的构建脚本
  • app/src:项目源码

settings.gradle:

rootProject.name = 'gradle-helloworld-java-app' //定义这个build的名字 建议使用固定的名字 因为目录名称可能会变
include('app') //定义这个build包含的子项目app 其中app里包含实际的代码和构建逻辑 如果有多个子项目可以再添加include('subproject2')

app/build.gradle:

plugins {
    // Apply the application plugin to add support for building a CLI application in Java.
    id 'application' //配置插件application
}

repositories {
    // Use Maven Central for resolving dependencies.
    mavenCentral() //配置中央仓库
}

dependencies {
    // Use JUnit Jupiter for testing.
    testImplementation 'org.junit.jupiter:junit-jupiter:5.9.1' //配置测试依赖

    // This dependency is used by the application.
    implementation 'com.google.guava:guava:31.1-jre' //配置运行时依赖
}

application {
    // Define the main class for the application.
    mainClass = 'org.example.App' //定义主类
}

tasks.named('test') {
    // Use JUnit Platform for unit tests.
    useJUnitPlatform()
}

运行这个应用:gradlew run,第一次执行脚本会下载这个版本的gradle到~/.gradle/wrapper/dists目录下
打包应用:gradlew build,application插件会打包应用及其依赖

使用idea,可以配置使用本地安装的gradle。

  • 默认gradle下载依赖到C:\Users\用户名\.gradle\caches\modules-2\files-2.1下,可以配置环境变量GRADULE_USER_HOME修改这个目录
  • 在gradle安装目录下init.d下添加脚本,指定下载源,其中mavenLocal()需要配置maven安装目录的环境变量M2_HOME
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"}
		}
	}
}

标签:Reference,gradle,构建,build,https,org,Gradle
From: https://www.cnblogs.com/bingmous/p/18101593

相关文章

  • Rust Reference Cycles: Resolving and Avoiding them
    InRust,referencecyclesoccurwhentwoormoreobjectsmutuallyreferenceeachother,formingacircularchain.Inthissituation,thereferencecountbetweenobjectsneverbecomeszero,leadingtomemoryleaksandresourceleaks.Thisblogpostwilldi......
  • Dubbo源码解读-Consumer消费端@Reference服务端引用流程
    上篇我们介绍了Provider端监听注册中心动态配置原理,地址如下Dubbo源码解析-Provider端监听注册中心动态配置原理-CSDN博客    本文主要针Dubbo消费端@Reference服务端引用流程原理,从dubbo源码角度进行解析。    大家可以好好仔细读一下本文。有疑问欢迎留言......
  • WPS二次开发系列:Gradle版本、AGP插件与Java版本的对应关系
    背景最近有体验SDK的同学反馈接入SDK出现报错,最终定位到原因为接入的宿主app项目的gradle版本过低导致,SDK兼容支持了android11的特性,需要对应的gradle插件为支持android11的版本。现象解决方案将gradle版本升级至支持android11的插件版本即可,对此google官方的引文如下......
  • springboot 与jdk与maven与gradle 对应版本
      SystemRequirementsSpringBoot3.2.4requires Java17 andiscompatibleuptoandincludingJava22. SpringFramework6.1.5 oraboveisalsorequired.Explicitbuildsupportisprovidedforthefollowingbuildtools:BuildToolVersionMa......
  • postgresql make check报postgres.lto.o:(.note.stapsdt+0x4ac): undefined reference
    如下:/usr/bin/ld:postgres.lto.o:(.note.stapsdt+0x24):undefinedreferenceto`postgresql_statement__status_semaphore'/usr/bin/ld:postgres.lto.o:(.note.stapsdt+0x74):undefinedreferenceto`postgresql_deadlock__found_semaphore'/usr/bin/ld:p......
  • gradle不同版本下载太慢---腾讯做了国内镜像可以直接下载
    嫌弃官网下载速度太慢的同学,可以点击下面的连接进行下载:https://mirrors.cloud.tencent.com/gradle/截图如下:有了速度如此之快的国内镜像,那么就可以应用到自己的项目中去,方法如下:1.进入到自己工程目录下的wrapper文件夹。2.编辑gradle-wrapper文件使用https://mirrors.clo......
  • android小球(二)——用户数据缓存详解SharedPreferences
    SharedPreferences概述SharedPreferences是Android平台上一个轻量级的存储辅助类,用来保存应用的一些常用配置,它提供了String,set,int,long,float,boolean六种数据类型。使用SharedPreferences进行存储的数据是存放在一个XML文件中的,同时它的存储方式是是以key-value的形式,key对应......
  • cppreference 速通指北
    本文将简要介绍cppreference的cpp部分中,较为古典且常用的部分同时,本文也尽量包含部分在特定场景中较为实用的内容注意:许多较为现代的,或者更多应用于项目的内容并未提及,请自行查找#容器库在阅读以下容器的相关页面时,可以留心迭代器概念:可以将其理解为包装过的指针本部......
  • 【Gradle测试】OOM问题解决方案
    文章目录概要问题场景问题复现解决方案相关资源概要分享开发过程中遇到的Gradle测试OOM问题的解决方案。问题场景当运行Gradle测试的时候,如果测试用例比较多,并且运行过程中创建的对象所占用的内存超过了Gradle测试默认的最大内存,则会发生OOM。问题复现由于本地......
  • 就是这么简单,Selenium StaleElementReferenceException 异常分析与解决
    简介Selenium是一个流行的自动化测试工具,用于模拟用户与网页交互。然而,当我们在使用Selenium时,可能会遇到一个常见的异常,即StaleElementReferenceException。这个异常通常在我们尝试与网页上的元素交互时抛出,可能会导致我们的自动化测试脚本运行失败。本文将深入探讨StaleE......