保险网站建设的目标,2023一般纳税人企业所得税怎么算,企业网站价格多少钱,最好用的设计网站目录一.概述二.优点三.安装与配置1. 官网下载2. 配置环境变量3. 检验4. 配置国内镜像(可选)5. IDEA配置三.工程结构四.生命周期1.Initialization阶段2.Configuration阶段3.Execution阶段五.Task六.常用任务指令七.引入依赖1.本地依赖2.项目依赖3.直接依赖八.依赖类型九.插件十.…
目录一.概述二.优点三.安装与配置1. 官网下载2. 配置环境变量3. 检验4. 配置国内镜像(可选)5. IDEA配置三.工程结构四.生命周期1.Initialization阶段2.Configuration阶段3.Execution阶段五.Task六.常用任务指令七.引入依赖1.本地依赖2.项目依赖3.直接依赖八.依赖类型九.插件十.依赖冲突一.概述
Java中主要有三大项目构建工具Gradle、Maven和AntGradle是继Maven之后的新一代构建工具他采用基于Groovy的特定领域语言(DSL)作为脚本相比通过XML来配置的传统构建工具(maven)最直观的感受就是脚本更加的简洁优雅
二.优点 多语言支持Java、Groovy、Scala、C都有良好的支持 跨平台支持Gradle是基于JVM的只要有JVM就可以让Gradle运行 脚本灵活性Gradle使用的是Groovy或Kotlin语言作为脚本的编写语言可以使用Groovy灵活的编写任务完成想要的任何事情 速度更快Gradle有增量构建、构建缓存等概念构建效率比Maven快些
三.安装与配置
1. 官网下载
进入官网https://gradle.org/releases/点击binary-only进行下载然后将下载好的压缩包解压到任意位置
2. 配置环境变量
新建一个名为GRADLE_HOME的变量变量值-浏览目录选择Gradle根目录 配置Path-指定Gradle的bin目录
3. 检验
CMD窗口输入以下命令如果出现版本号等信息说明安装配置成功
gradle -v4. 配置国内镜像(可选)
同Maven一样Gradle也可以配置国内镜像来提升下载速度我们打开用户目录的.gradle文件夹创建一个init.gradle文件
allprojects {repositories {maven{ url http://maven.aliyun.com/repository/public/}mavenCentral()}
}5. IDEA配置 三.工程结构 四.生命周期
Gradle的生命周期分为三个阶段Initialization-Configuration-Execution
1.Initialization阶段
执行init.gradle和setting.gradle,init gradle文件会在每个项目build之前被调用完成一些初始化的操作例如
配置内部的仓库信息如公司的maven仓库信息
配置全局属性
配置用户名及密码信息Setting.gradle决定哪些项目参与到构建中为每个项目创建一个Project 2.Configuration阶段
执行build.gradle文件顺序是先执行完所有父工程的再执行子工程的根据脚本代码创建对应的Task最终根据所有Task生成有向无环图
3.Execution阶段
根据Configuration阶段的有向无环图按顺序执行Task
五.Task
Gradle执行的最小单元是TaskTask包含三部分的行为分别是doFirst、doSelf、doLast Action的执行顺序
下面是简单的Task演示
task(task1){print(Configuration阶段执行)doFirst {print(Execution阶段执行且在doLast前执行)}doLast {print(Execution阶段执行)}
}编写Task1
执行Task1
六.常用任务指令 gradle init: 初始化gradle项目 gradle build: 构建项目包括编译、测试、打包等操作同步生成build文件夹 gradle clean: 清除当前项目的build文件夹 gradle bootjar: 生成jar包 gradle projects: 展示项目层级 gradle dependencies: 树形展示项目依赖
七.引入依赖
Gradle有三种引入依赖的方式分别是本地依赖、项目依赖和直接依赖都是在build.gradle文件中引入
1.本地依赖 文件集合方式指定
implementation files(lib/fastjson-1.2.83.jar, lib/commons-io-2.11.0.jar)文件树方式指定
implementation fileTree(dir:lib, includes: [fastjson*.jar], excludes: [commons-io-2.11.0.jar])2.项目依赖
implementation project(:subProject1)subProject1必须在settings.gradle中声明 subProject1模块通过api引入的依赖就可以传导到rootProject工程(implementation引入的不支持)rootProject就可以直接使用gson依赖了
3.直接依赖
声明格式为 依赖的类型 依赖的组名,依赖的名称,依赖的版本号
implementation group:com.google.code.gson,name:gson,version:2.8.5上述可以简写为
implementation com.google.code.gson:gson:2.8.5八.依赖类型
依赖类型说明compileOnlyjava插件提供适用于仅编译器需要而无需打包的情况取代老版本的compileruntimeOnlyjava插件提供仅运行期有效编译时不需要比如mysql驱动包取代老版本的runtimeimplementationjava插件提供针对src/main目录在编译、运行时都有效testCompileOnlyjava插件提供仅测试编译时有效运行时不需要testRuntimeOnlyjjava插件提供只在测试运行时需要编译时不需要testImplementationjava插件提供针对src/test目录在编译、运行时都有效providedCompilewar插件提供支持编译、测试阶段代码需要而运行阶段容器已经提供了相应的支持所以无需打到war包中了例如servlet-api.jar、jsp-api.jarapijava-library插件提供支持可以传递性地导出给使用者用于编译和运行时compileOnlyApijava-library插件提供支持在声明的模块和使用者在编译时需要的依赖项运行时不需要
api与implemention的区别 api能进行依赖传导下层变动上层全部跟着变动所以编译速度慢适用于多模块依赖的情况避免重复依赖 implemention不能进行依赖传导下层变动上层不用全部变动所以编译速度块多数情况选择它
九.插件
在build.gradle文件中引入插件不同的插件支持不同的依赖类型java插件支持的java-library插件都支持
十.依赖冲突
依赖冲突指的是如果存在某一依赖的多个版本, 最终只有一个版本的依赖能打包进jar /war包对于Gradle来说就有冲突了 spring-boot-starter-test:2.7.9包含junit-jupiter:5.8.2版本的jar同时我引入了junit-jupiter:5.9.0版本的jar
testImplementation org.springframework.boot:spring-boot-starter-test
testImplementation org.junit.jupiter:junit-jupiter:5.9.0下图中可以发现Gradle默认会使用最新版本的 jar包(考虑到新版本的jar包一般都是向下兼容的)实际开发中也是建议使用官方自带的这种解决方案 同时Gradle还提供了一系列解决冲突的方法例如exclude移除依赖、不允许依赖传递、强制使用某个版本
exclude移除依赖
testImplementation(org.springframework.boot:spring-boot-starter-test){exclude group:org.junit.jupiter// exclude module:junit-jupiter// exclude group:org.junit.jupiter, module:junit-jupiter}不允许依赖传递(不推荐使用)
testImplementation(org.springframework.boot:spring-boot-starter-test){transitive(false)}此时spring-boot-starter-test所引用的包将需要我们一个个手动去引入
强制使用某个版本(添加双感叹号)
testImplementation org.springframework.boot:spring-boot-starter-test
testImplementation org.junit.jupiter:junit-jupiter:5.9.0!!