【gradle】从settings.gradle说起-创新互联

gradle 系列

gradle下载配置

为龙井等地区用户提供了全套网页设计制作服务,及龙井网站建设行业解决方案。主营业务为网站设计、成都网站制作、龙井网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

【gradle】从 settings.gradle说起
  • gradle 系列
  • 前言
  • 1、settings.gradle
  • 2、依赖
    • 2.1、依赖的方式
      • 直接依赖
      • 项目依赖:从项目的某个模块依赖另一个模块
      • 本地 jar 依赖:本地 jar 文件依赖
    • 2.2、依赖的下载
    • 2.3、依赖的类型
      • api 与implementation 区别
    • 2.3、解决依赖冲突
      • 2.3.1、默认Gradle 会使用最新版本的 jar 包
      • 2.3.2、强制使用某个版本
  • 3、插件
    • 3.1、内部插件
    • 3.2、第三方插件
  • 4、build.gradle
    • 4.1、repository
    • 4.2、Subprojects 与 Allprojects
    • 4.3、ext
    • 4.4、buildscript
  • 总结


前言

1、在搭建好 spring 5 源码后,在自己编写测试用例和添加测试 module 时,会遇到一些配置报错信息,由于不了解 gradle 配置文件的语法和含义,产生了一些困扰,因此在这里学习一下 gradle 一些配置文件语法。
2、gradle 官网:https://gradle.org/


1、settings.gradle

一个 gradle 工程中只能有一个settings.gradle文件

settings.gradle 文件的语法,这里参考spring 源码的 settings 文件

settings.gradle

项目名称中:代表项目的分隔符, 类似路径中的/. 如果以:开头则表示相对于 root project

//根工程项目名
rootProject.name = 'root'
//包含的子工程名称
include 'subject01' 
include 'subject02' 
include 'subject03'
//包含的子工程下的子工程名称
include 'subject01:subproject011' 
include 'subject01:subproject012'

2、依赖
2.1、依赖的方式

Gradle 中的依赖分别为直接依赖,项目依赖,本地jar 依赖

直接依赖
dependencies {//①.依赖当前项目下的某个模块[子工程]
implementation project(':spring-aop')
//②.直接依赖本地的某个jar文件
implementation files('libs/foo.jar', 'libs/bar.jar')
//②.配置某文件夹作为依赖项
implementation fileTree(dir: 'libs', include: ['*.jar'])
//③.直接依赖 简写
implementation 'org.apache.logging.log4j:log4j:2.17.2'
//③.直接依赖 完整版 group/name/version 同 maven 的 GAV
implementation group: 'org.apache.logging.log4j', name: 'log4j', version: '2.17.2'
}
项目依赖:从项目的某个模块依赖另一个模块

例如:spring-context 依赖 spring-aop

implementation project(':spring-aop')
本地 jar 依赖:本地 jar 文件依赖

一般包含以下两种方式

/直接依赖某文件
implementation files('libs/foo.jar', 'libs/bar.jar')
//配置某文件夹作为依赖项
implementation fileTree(dir: 'libs', include: ['*.jar'])
2.2、依赖的下载

当执行 build 命令时,gradle 就会去配置的依赖仓库中下载对应的 Jar,并应用到项目中。

2.3、依赖的类型

类似于 Maven 的 scope 标签

类型作用补充
compileOnly适用于编译期需要而不需要打包的情况
runtimeOnly只在运行期有效,编译时不需要取代老版本中被移除的 runtime
implementation针对源码[src/main 目录] ,在编译、运行时都有效取代老版本中被移除的 compile
testCompileOnly用于编译测试的依赖项,运行时不需要
testRuntimeOnly只在测试运行时需要,而不是在测试编译时需要取代老版本中被移除的testRuntime
testImplementation针对测试代码[src/test 目录]取代老版本中被移除的testCompile
providedCompilewar 插件提供支持,编译、测试阶段代码需要依赖此类jar 包,而运行阶段容器已经提供了相应的支持,所以无需将这些文件打入到war 包中了例如servlet-api.jar、jsp-api.jar
compile编译范围依赖在所有的 classpath 中可用,同时它们也会被打包在 gradle 7.0 已经移除
runtimeuntime 依赖在运行和测试系统的时候需要,在编译的时候不需要,比如mysql 驱动包在 gradle 7.0 已经移除
apijava-library 插件提供支持,这些依赖项可以传递性地导出给使用者,用于编译时和运行时取代老版本中被移除的 compile
compileOnlyApijava-library 插件提供支持,在声明模块和使用者在编译时需要的依赖项,但在运行时不需要
api 与implementation 区别

例子:
区别
分析:

apiimplementation
编译时libC 的内容发生变化,由于使用的是 api 依赖,依赖会传递,所以 libC、libA、projectX 都要发生变化,都需要重新编译,速度慢如果libD 的内容发生变化,由于使用的是implemetation 依赖,依赖不会传递,只有libD、libB 要变化并重新编译,速度快
运行时libC、libA、projectX 中的class 都要被加载api相同
总结多数情况下使用implementation

拓展:


在这里插入图片描述


2.3、解决依赖冲突

例子:

在这里插入图片描述

2.3.1、默认Gradle 会使用最新版本的 jar 包

新版本的 jar 包一般都是向下兼容的(建议使用官方自带的这种解决方案)

2.3.2、强制使用某个版本
dependencies {testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' 
	testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' 
	//强制使用某个版本!!【官方建议使用这种方式】
	implementation('org.slf4j:slf4j-api:1.4.0!!')
	//这种效果和上面那种一样,强制指定某个版本
	implementation('org.slf4j:slf4j-api:1.4.0'){version{strictly("1.4.0")
	}
}
3、插件

在这里插入图片描述


3.1、内部插件
configure(allprojects) {project ->group = "org.springframework"
	version = qualifyVersionIfNecessary(version)

	apply plugin: "java"
	apply plugin: "kotlin"
	apply plugin: "checkstyle"
	apply plugin: "propdeps"
	apply plugin: "test-source-set-dependencies"
	apply plugin: "io.spring.dependency-management"
	apply from: "${gradleScriptDir}/ide.gradle"
}
3.2、第三方插件

如果第三方插件已经被托管在 https://plugins.gradle.org/

// 3rd party plugin repositories can be configured in settings.gradle
plugins {id "io.spring.dependency-management" version "1.0.7.RELEASE" apply false
	id "org.jetbrains.kotlin.jvm" version "1.2.71" apply false
	id "org.jetbrains.dokka" version "0.9.18"
	id "org.asciidoctor.convert" version "1.5.8"
	id "com.jfrog.artifactory" version '4.9.8' apply false
}
4、build.gradle

在 spring 中一般为project-name.gradle

每个 module 都要自己的.gradle文件,用来配置版本、插件、依赖库等信息

build 文件中常见的属性和方法:

常用方法和属性

4.1、repository

从上往下找,找到了就停止,找不到继续往下找

1

4.2、Subprojects 与 Allprojects

对指定工程进行配置
在这里插入图片描述

4.3、ext

自定义属性

ext

4.4、buildscript
  1. buildscript{}必须在 build.gradle 文件的最前端。
  2. 对于多项目构建,项目的 buildscript ()方法声明的依赖关系可用于其所有子项目的构建脚本。

buildscript


总结

记录了一些在尝试建立测试模块中不了解的内容,之后在看源码的过程中遇到问题再补充吧…

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

标题名称:【gradle】从settings.gradle说起-创新互联
本文路径:https://www.cdcxhl.com/article14/cojige.html

成都网站建设公司_创新互联,为您提供移动网站建设外贸网站建设网站改版微信公众号网站内链域名注册

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站托管运营