gradle的使用
2000年:Ant
2004年:Maven
2012年:Gradle
Gradle使用Groovy语言来管理jar包,替换maven繁琐的xml配置
1、Gradle安装配置(windows版)
下载:https://gradle.org/releases/
版本要跟你的IDEA适配的版本一致,比如2019.2的IDEA视频的是Gradle5.2.1版本



1.配置环境变量 GRADLE_HOME,对应Gradle的安装目录。

2.配置环境变量 GRADLE_USER_HOME,对应Gradle本地仓库或工作空间目录(自已创建的指定目录)。

3.在Path中添加Gradle
%GRADLE_HOME%\bin;

运行“gradle -v” 查看是否安装成功
4、配置国内仓库
在gradle目录D:\ProgramDevs\gradle-5.2.1\init.d,添加一个文件 init.gradle ,添加以下内容
allprojects {
repositories {
maven { url 'file:///D:/ProgramDevs/gradleRepo'}
mavenLocal()
maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
mavenCentral()
}
buildscript {
repositories {
maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
}
}
}
maven { url ‘file:///D:/ProgramDevs/gradleRepo’} 配置的是Gradle本地仓库或工作目录的地址,对应GRADLE_USER_HOME。
如果不配置,可以直接将这段代码直接放到build.gradle中:目的是指定配置阶段依赖的包的calsspath的下载地址:

如果放在allprojects中,表示项目的依赖包的下载地址:

2、Gradle和idea集成
创建gradle项目


修改Gradle配置



3、Gradle本地仓库可以使用Maven的本地仓库
gradle配置文件说明:

可以把Gradle本地仓库配置为maven的本地仓库,这样,就不用去Gradle中央仓库下载了,就直接去maven本地仓库取
配置环境变量 GRADLE_USER_HOME

配置好后,再加上一个配置mavenLocal,这样就先从本地仓库找jar包,找不到再去中央仓库找

4、Gradle入门案例
先写一个java工程

构建完“xxx.jar”怎么执行呢?
`xxx.jar com.wyz.Main`
5、Gradle构建java web工程并在tomcat下运行
如何把java工程变成web工程???加上webapp目录,并且配置中写上apply plugin:‘war’ 就行了

写web工程(略)
打包运行:


点击运行即可。
==================================================使用插件启动tomcat=============================================







6、Gradle构建多模块项目(重点)
先创建父工程:


父工程的作用是管理子模块的,可以将父工程的src目录删除。
父工程中创建子模块: dao

保持默认,下一步


同样的方法,再创建一个service模块

最后再创建一个web模块

由于web模块现在是java项目,需要变成web项目:
去web模块下加上webapp目录,并且配置中写上apply plugin:‘war’
这样,父工程下创建了三个子模块

配置文件中也能看出来:

想让子模块使用依赖,坐标写在父工程的配置文件中,并且加上allprojects
(说明1:sourceCompatibility=1.8 表示JDK版本为1.8)
(说明2:如果只想所有的子模块通用,就不是放在allprojects了,而是放在subprojects里)

子模块配置中,跟父工程重复的配置可以删除。

service模块要使用dao模块的代码,需要在service下配置中加上dependencies

同理,web中也要加

接下来就能写代码运行了。
7、Gradle构建脚本介绍:project和task

理解:
任何一个Gradle构建都由一个或多个project组成。比如:父项目下所有子模块,他们有相互依赖关系,构建父项目就是由构建多个子模块组成
每个project包括许多构建部分,可以是jar包,可以是war包,比如子模块可以是jar项目,可以是war项目。
我们在配置文件中看到的
8、build.gradle常用配置
dependencies:

9、如何解决依赖冲突
依赖冲突是如何产生的??
比如我项目中需要依赖A,而A依赖了B、C,B和C又分别依赖了D,但是B和C依赖的D是不同版本的,这样就产生依赖冲突的问题。

Maven和Gradle默认是如何处理依赖冲突的??


如果不想用Gradle的默认处理方式,有哪些其他选择???




10、Gradle项目的发布
发布的意义:发布指的是把自己的项目打包放到Maven仓库中,供其他人引用
(想一想:是否可以把被测的代码打包发布到仓库中,让测试脚本去引用,这样就可以无侵入的测试被测代码了?)



11、application插件

13、Plugin Management语法块
pluginManagement{}语法块是专门用于管理整个项目插件的,只能出现在settings.gradle文件或”初始化脚本“中,并且在settings.gradle文件中pluginManagement{}必须是文件中的第一个块。


默认情况下,plugins DSL语法会从Gradle plugin portal去解析插件,但许多插件开发者喜欢使用私有的Maven或Ivy仓库,为了指定使用的插件仓库,
Gradle提供了repositories{}语法块,放在pluginManagement语法块中使用,用于管理整个项目使用的插件仓库。
语法规则如下(以本地路径为例,如果使用网络资源就将路径替换成http url):
插件版本管理
Gradle提供了plugins{}语法块,用于pluginManagement语法块中,用于统一指定整个仓库使用的某个插件的版本。
使用这种方式管理插件的版本有一些好处,例如在多projects构建中很有用,因为在多projects构建中统一每个子project依赖的插件版本很有必要;
另外,前面提过,DSL语法在build.gradle有严格的限制,但是在settings.gradle中语法却比较宽松,这允许它从gradle.properties文件中去获取版本。
在根目录下的settings.gradle指定了插件的版本后,在build.gradle中只需要指定插件的id即可,插件版本配置在gradle.properties中。

浙公网安备 33010602011771号