Gradle入门

1.什么是Gradle

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy语言进行编写的,主要面向Java应用为主,目前也增加了基于Kotlin语言以及Scala语言的支持,目的是为了抛弃了基于XML的各种繁琐配置。

2.安装Gradle

2.1下载

使用win10为例进行安装,前提是本机已安装JDK1.8+。下载网址:https://gradle.org/install/。在下载页面选择二进制的文件,然后解压到指定的目录即可。

2.2安装

解决后需要配置环境变量,需要指定到bin目录,配置后是cmd输入

gredle -v

看到下图说明安装成功。

 3.Gradle与IDEA集成

项目源码:https://github.com/zhongyushi-git/gradle-collection.git。本介绍IDEA版本是2020.3.3,其他版本可能有差别。

1)打开idea,使用gradle创建一个java项目,指定JDK

2)点击next,输入基本信息

3)点击finish,就会进行创建。创建成功后并没有生成src目录,就需要手动通过任务创建。

4)设置Gradle的安装路径为本地路径,jvm使用本地的jdk

5)打开build.gradle文件,在最后面添加下面的代码

task "create-dirs"  {
    sourceSets*.java.srcDirs*.each {
        it.mkdirs()
    }
    sourceSets*.resources.srcDirs*.each{
        it.mkdirs()
    }
}

6)点击右边的Gradle中的刷新按钮,然后按下图步骤操作

7)操作成功后就有src目录了,生成的目录如图

4.Groovy基本语法

4.1打开Groovy调式窗口

在gradle使用的是groovy语言,可以通过Groovy调式窗口来测试groovy代码,打开方式是在菜单栏选择Tools,如下图:

打开后就可以在里面输入代码,点击左边的按钮执行,执行的结果在控制台进行打印

 4.2 基本语法

1)基本输出

 基本输出使用println,后面的括号可省略,也不需要添加分号

println("hello world")
println "hello world"

打印结果如下

 2)定义变量

定义变量可以使用int,string等类型,也可以使用def来声明,但需要注意的是在groovy中没有基本数据类型,都是对象类型。

int a  = 23
println a
def aa = 234
println aa

def str = 'hello'
def str2 = "hello"
println str
println str2

3)定义方法

方法的定义类似于JavaScript,使用def声明。分支语句if-else也类似,在此略

def test(def p){
    println("参数是:"+p)
}

test('hello gradle')

4)定义l集合

定义list集合

def list = ['love','哈哈哈','xiaohei','456']
//使用下标访问
println list[0]
//遍历
for(el in list){
    println el
}

定义map集合

def map = ['name': '张三', 'age': 20, sex: '']

println map.get('name')

for (item in map) {
    println(item.getKey() + ":" + item.getValue())
}

 4.3闭包

闭包表示的是groovy中的一段代码块,主要作为参数在方法之间传递使用。相当于一块公共的代码块,在不同的方法中来调用。那么在方法中药使用Closure 关键字来定义参数,在方法里面调用此类型的方法,如下代码是无参数的闭包:

//闭包
def aaa = {
    println('hello geadle')
}

def test1(Closure closure){
    //执行闭包的代码
    closure()
}

test1(aaa)

带有参数的闭包

//闭包
def bbb = {
    v -> println('hello ' + v)
}

def test2(Closure closure){
    //执行闭包的代码
    closure('zxh')
}

test2(bbb)

4.4build.gradle和settings.gradle详解

在第三章汇总创建gradle的项目后,在项目根目录下有两个文件,分布是build.gradle和settings.gradle。

1)在依赖中,group就是pom中的groupId,name就是pom中的artifactId。

2)settings.gradle中指定的就是项目名,要通过项目名进行访问。

3)mavenCentral()表示使用中央仓库,则项目中所需要的jar包都会默认从中央仓库下载到本地指定目录中(C:\\Users\\username\\.gradle\\caches\\modules-2\\files-2.1

4.5 指定maven中心仓库的路径

若直接使用中央仓库,则下载很慢,会使用本地以及下载好的仓库。配置步骤如下:

1)把本地仓库路径其配置到环境变量中

 

 需要注意的是,这个变量名只能是这个,固定的,否则不会生效。

2)配置本地仓库

在build.gradle的repositories中添加mavenLocal()并指定下载的仓库,如图

mavenLocal表示从本地仓库寻找jar包,先从本地查找,没有找到再中央仓库下载。当然,这里只配置了一个地址,需要的时候可以配置多个阿里云的仓库地址,毕竟阿里仓库的服务器主机不止一台。

maven {
url 'https://maven.aliyun.com/repository/public/'
}
mavenLocal()

配置后重启idea,再次打开settings,看到Grade user home已经变成指定的仓库路径了,如下图

5.使用Gradle创建spring项目

示例源码:从第三章下载源码,此源码在gradle-demo文件夹下。

在第3章中,我们已经创建了一个基本的java项目,就在此基础上进行开发,使用spring的自动注入功能。

1)在build.gradle先导入spring-context的依赖

compile group: 'org.springframework', name: 'spring-context', version: '5.3.4'

这种依赖可以在https://mvnrepository.com/中选择gradle格式复制。

2)创建UserService接口

package com.zxh;

public interface UserService {

    void getList();
}

3)创建UserServiceImpl实现类

package com.zxh;

public class UserServiceImpl implements UserService {
    @Override
    public void getList() {
        System.out.println("all user list");
    }
}

4)在资源目录下创建spring的配置文件applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">

    <bean id="userService" class="com.zxh.UserServiceImpl"></bean>

</beans>

5)修改gradle的构建及运行环境使用IDEA环境

 此选项默认是Gradle,需要修改为IDEA。凡是gradle的项目,这里都必须改成IDEA。

6)在test目录下新建测试类和方法

package com.zxh;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class UserTest {

    @Test
    public void test3() {
        //加载配置文件
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取bean对象
        UserService userService = (UserService) context.getBean("userService");
        //调用方法
        userService.getList();
    }
}

7)运行测试方法。可以看到把UserService注入进来并调用其方法了。

6.使用Gradle创建spring web项目

示例源码:从第三章下载源码,此源码在gradle-web-demo文件夹下。

1)打开idea,选择新建项目

2)使用Gradle进行创建,选勾选ava

3)输入项目基本信息

 

 4)创建后使用Task命令创建src目录(第三章已介绍)

 5)设置Gradle的安装路径为本地路径,jvm使用本地的jdk并使用idea进行构建

 

6)在src/main目录下新建webapp目录

7)在build.gradle中指定项目是war包,并添加spring需要的依赖,指定本地仓库

 附上依赖:

  implementation group: 'org.springframework', name: 'spring-beans', version: '5.3.4'
    implementation group: 'org.springframework', name: 'spring-context', version: '5.3.4'
    implementation group: 'org.springframework', name: 'spring-core', version: '5.3.4'
    implementation group: 'org.springframework', name: 'spring-expression', version: '5.3.4'
    implementation group: 'org.springframework', name: 'spring-web', version: '5.3.4'
    implementation group: 'org.springframework', name: 'spring-webmvc', version: '5.3.4'
    compileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1'
    compileOnly group: 'javax.servlet.jsp', name: 'javax.servlet.jsp-api', version: '2.3.3'

当然,上述的依赖是完整的格式,也有简写的格式,如下:

  implementation 'org.springframework:spring-beans:5.3.4'
    implementation 'org.springframework:spring-context:5.3.4'
    implementation 'org.springframework:spring-core:5.3.4'
    implementation 'org.springframework:spring-expression:5.3.4'
    implementation 'org.springframework:spring-web:5.3.4'
    implementation 'org.springframework:spring-webmvc:5.3.4'
    compileOnly 'javax.servlet:javax.servlet-api:4.0.1'
    compileOnly 'javax.servlet.jsp:javax.servlet.jsp-api:2.3.3'

7)点击右侧gradle中的刷新按钮,然后打开project Structrue,

8)选择Facets,再选择web,在Deployment Descriptors中点击添加按钮,会显示web.xml,再点击进行添加

9)在弹框中指定webapp的目录,并在后面添加\WEB-INF\web.xml后点击OK,

 

10)此时在Web Resource Directories中的目录也会变成webapp所在的路径

11)点击Apply,webapp目录就变成资源目录了,也生成了web.xml文件

12)在web.xml中配置内容

    <!--springmvc前端控制器-->
    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--加载配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

13)在resources目录下新建springmvc.xml,内容如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context.xsd">

    <!--开启注解-->
    <mvc:annotation-driven></mvc:annotation-driven>
    <!--包扫描-->
    <context:component-scan base-package="com.zxh.controller"/>


</beans>

14)创建包com.zxh.controller,并在此包下新建TestController类

package com.zxh.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @GetMapping("/test")
    public String test() {
        return "Hello,world!Gradle";
    }


}

15)点击add Configuration,添加tomcat

16)添加tomcat

 17)选择Deployment,添加要运行的项目

 18)选择项目

19)修改访问路径为/,方便访问

20)启动tomcat,访问localhost:8080/test即可看到返回的信息,此时搭建已经完成。

7.使用Gradle创建springboot项目

示例源码:从第三章下载源码,此源码在gradle-springboot-demo文件夹下。

1)打开idea,选择新建项目

2)使用Spring Initializr进行创建

3)输入基本信息,type选择Gradle,packaging选择war

 4)选择Web,勾选Spring Web

5)点击next,最后完成即可。设置Gradle的安装路径为本地路径,jvm使用本地的jdk

6)build.gradle中添加本地仓库

 7)点击右侧的gradle打开面板,点击刷新按钮,下载需要的依赖

8)下载完成后会在包下生产启动类和servlet启动器,这里先不启动。

9)修改配置文件application.properties,把配置应用名称的哪行代码注释

 注释掉是为了方便测试。

10)在包下新建controller包,再建TestController类,写一个测试的接口

@RestController
public class TestController {

    @GetMapping("/test")
    public String test(){
        return "Hello,Gradle!";
    }
}

11)点击运行启动类,可以看到在控制台运行成功,如图

12)在浏览器访问http://localhost:8080/test可正常返回数据,此时使用gradle创建SpringBoot项目已完成。

8.查看依赖关系

maven的方式打开pom.xml可以很清楚的看到其依赖关系和版本冲突,而gradle对多个版本,则默认会采用最高的版本,也可直接查看依赖关系:

执行后即可在控制台看到依赖关系图:

当需要排除某个包的依赖时,可使用以下方式:

将原有依赖使用小括号包裹起来,需要排除的依赖使用大括号包裹,里面指定group即可。

posted @ 2021-03-29 19:00  钟小嘿  阅读(132)  评论(0编辑  收藏  举报