gradle初体验

摘要:
闭包实际上是一块代码。在gradle中,我们主要使用闭包作为参数。
1、下载

下载网站 https://services.gradle.org/distributions/

我们公司用的是4.8.1的版本

gradle初体验第1张

下载完成解压之后是这样的

gradle初体验第2张

2、配置环境变量

1、环境变量 ---> 新建 ---> 变量名GRADLE_HOME、变量值(自己的解压路径)

gradle初体验第3张

2、Path ---> 新建 ---> %GRADLE_HOME%in

gradle初体验第4张

3、验证 cmd 输入 gradle -v

gradle初体验第5张

3、IDEA用使用gradle创建Java项目

gradle的使用是不需要想maven一样进行配置的,直接创建 gradle项目即可

gradle初体验第6张

这里我创建了一个名为hello-gradle的项目

gradle初体验第7张

build.gradle文件

plugins {
    id 'java'
}

group 'com.gradle'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8
/*
 * 指定所使用的的仓库,mavenCentral()表示使用中央仓库,此刻项目中所需要的jar包都会
 * mavenLocal();//先从本地仓库下载
 * mavenCentral()//再从中央仓库下载
 * 如果只配置了 mavenCentral()那只会从中央仓库下载。
 */
repositories {
    mavenLocal();//先从本地仓库下载
    mavenCentral()//再从中央仓库下载
}

/*
 gradle 工程所有的jar包坐标都在dependencies属性内放置
 每一个jar包的坐标都有三个基本元素组成
 group 、name 、 version
 testCompile 表示该jar包在测试的时候起作用,改属性为jar包的作用域
 我们在gradle里面添加坐标的时候都要带上jar包的作用域
 */

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    // https://mvnrepository.com/artifact/org.springframework/spring-context
    implementation group: 'org.springframework', name: 'spring-context', version: '5.0.2.RELEASE'

}
4、grovvy基本语法
//grovvy编程语言
println("hello grovvy");
//grovvy中可以省略语句最末尾的分号 也可以省略括号
println "hello grovvy"

// grovvy中如何定义变量
// def 是若类型的 grovvy会自动根据情况来给变量赋予对应的类型 有点类似js中的var
def i = 10;
println i;
def s = "张三"
println s
//定义一个集合
def list = ['a','b']
//往list中添加元素
list << 'c'
//取出list中第三个元素
println list.get(2)
// 定义一个map
def map = ['key1':'value1','key2':'value2']
// 向map中添加键值对
map.key3 = 'value3'
// 打印出key3的值
println map.get("key3")

// grovvy中的闭包
// 什么是闭包? 闭包其实就是一段代码块。在gradle中,我们主要是把闭包当参数使用。
def b1 = {
    println "hello b1"
}

// 定义一个方法,方法里面需要使用闭包类型的参数
def method1(Closure closure){
    closure()
}
// 调用方法 method1
method1(b1)

//定义一个闭包,带参数
def b2 = {
    v ->
        println "hello ${v}"
}
// 定义个方法,方法里面需要闭包类型的参数
def method2(Closure closure){
    closure("xiaoma")
}
//调用方法 method2
method2(b2)
5、gradle使用本地maven仓库

环境变量 ---> 新建 --->变量名: GRADLE_USER_HOME;变量值:maven的仓库地址

gradle初体验第8张

6、gradle创建JavaWeb项目
1、创建项目

这里还是选择创建gradle Java项目

gradle初体验第9张

2、设置web目录

这里手动创建webapp目录 ---> WEB-INF目录 ---> web.xml

gradle初体验第10张

web.xml

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
         
</web-app>

如果只是到现在,这也只是一个普通的目录和web没有什么关系,在build.gradle中设置打包方式,会自动变成web目录

gradle初体验第11张

3、配置springweb环境

3.1 引入web相关jar包

plugins {
    id 'java'
    // 添加war打包
    id 'war'
}

group 'com.uanghaou'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    implementation group: 'org.springframework', name: 'spring-context', version: '5.0.2.RELEASE'
    implementation group: 'org.springframework', name: 'spring-web', version: '5.0.2.RELEASE'
    implementation group: 'org.springframework', name: 'spring-webmvc', version: '5.0.2.RELEASE'
    compileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'
    compileOnly group: 'javax.servlet', name: 'jsp-api', version: '2.0'
}

3.2 配置web.xml文件

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
<!--    配置springmvc核心servlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spirngmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

3.3 配置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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

<!--    配置组件扫描-->
    <context:component-scan base-package="com.uanghaou"/>
<!--    处理器映射器-->
    <mvc:annotation-driven/>

<!--    试图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

<!--    释放静态资源-->
    <mvc:default-servlet-handler/>

</beans>

3.4 创建controller

package com.uanghaou;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author: Yuanghaou
 * @create: 2021-07-18 19:47
 **/

@Controller
@RequestMapping("/hello")
public class HelloController {

    @RequestMapping("/list")
    public String toList(){
        return "list";
    }
}

3.5 创建jsp页面

在WEB-INF文件夹下面创建pages文件夹,在pages文件夹下创建list.jsp

gradle初体验第12张

3.6 配置Tomcat并测试

gradle初体验第13张

gradle初体验第14张

7、gradle工程的拆分和聚合
1、创建父工程

这里还是和上面一样,创建gradle的Java工程

gradle初体验第15张

2、创建子工程

这里在父工程中 反键 ---> new ---> Module

gradle初体验第16张

这里还是选择gradle Java项目

gradle初体验第17张

设置子工程名

gradle初体验第18张

按照套路创建其他的子工程,这里注意web项目也是创建Java工程,然后需要自己设置为web项目。具体参考上面一小节

gradle初体验第19张

3、关联各个模块

将共同需要用的到配置到parent工程的 build.gradle 中。需要注意的是要放在allprojects{}才能被子类使用到

allprojects {

    apply plugin: 'java'

    group 'com.uanghaou'
    version '1.0-SNAPSHOT'

    sourceCompatibility = 1.8

    repositories {
        mavenLocal()
        mavenCentral()
    }

    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
        implementation group: 'org.springframework', name: 'spring-context', version: '5.0.2.RELEASE'
        implementation group: 'org.springframework', name: 'spring-web', version: '5.0.2.RELEASE'
        implementation group: 'org.springframework', name: 'spring-webmvc', version: '5.0.2.RELEASE'
        compileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'
        compileOnly group: 'javax.servlet', name: 'jsp-api', version: '2.0'
    }
}



然后子模块就不需要重复配置这些了,但需要配置子类特有的

service模块需要引入dao模块

dependencies {
    compile project(":gradle_dao")
}

web模块需要引入service模块

plugins {
    id 'war'
}
dependencies {
    compile project(":gradle_service")
}
4、简单的三层架构实现

4.1 dao层实现

package com.uanghaou.dao;

/**
 * @author: Yuanghaou
 * @create: 2021-07-18 23:01
 **/


public interface UserDao {

    public String save();
}

package com.uanghaou.dao.impl;

import com.uanghaou.dao.UserDao;
import org.springframework.stereotype.Repository;

/**
 * @author: Yuanghaou
 * @create: 2021-07-18 23:20
 **/
@Repository
public class UserDaoImpl implements UserDao {

    @Override
    public String save() {
        return "ok!";
    }
}

4.2 service层实现

package com.uanghaou.service;

/**
 * @author: Yuanghaou
 * @create: 2021-07-18 22:57
 **/

public interface UserService {

    public String save();
}

package com.uanghaou.service.impl;

import com.uanghaou.service.UserService;
import com.uanghaou.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @author: Yuanghaou
 * @create: 2021-07-18 22:59
 **/

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    @Override
    public String save() {
        return userDao.save();
    }
}

4.3 controller层实现

package com.uanghaou.controller;

import com.uanghaou.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author: Yuanghaou
 * @create: 2021-07-18 19:47
 **/

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/save")
    public String save(Model model){
        String save = userService.save();
        model.addAttribute("save",save);
        return "list";
    }
}

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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

<!--    配置组件扫描-->
    <context:component-scan base-package="com.uanghaou"/>
<!--    处理器映射器-->
    <mvc:annotation-driven/>

<!--    试图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

<!--    释放静态资源-->
    <mvc:default-servlet-handler/>

</beans>

web.xml

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <!--    配置springmvc核心servlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spirngmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

4.4 jsp层实现

index.jsp
<%--
  Created by IntelliJ IDEA.
  User: uangh
  Date: 2021/7/18
  Time: 22:22
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <jsp:forward page="/user/save"></jsp:forward>
  </body>
</html>

pages/list.jsp
<%--
  Created by IntelliJ IDEA.
  User: uangh
  Date: 2021/7/18
  Time: 19:48
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    ${save}
    <br/>
    成功跳转到列表页面

</body>
</html>

4.5 测试

gradle初体验第20张

免责声明:文章转载自《gradle初体验》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇js将汉字转为相应的拼音MYSQL优化(2)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF自定义控件的制作

  因为有时候需要定制化的控件,需要多个控件的组合及复杂功能的集成,这样可以考虑自定义用户控件。下面分享一个简单的数值增减功能的自定义控件作为说明。 效果图如下: 1、创建自定义用户控件(添加->新建项->用户控件) 2、编写XAML <UserControl x:Class="XXX.自定义控件.MyNumericUpDown"...

TOMCAT原理详解及请求过程(转)

https://www.cnblogs.com/hggen/p/6264475.html TOMCAT原理详解及请求过程 Tomcat: Tomcat是一个JSP/Servlet容器。其作为Servlet容器,有三种工作模式:独立的Servlet容器、进程内的Servlet容器和进程外的Servlet容器。 Tomcat目录: tomcat|---bin:...

【翻译】Flink Table API &amp;amp; SQL 自定义 Source &amp;amp; Sink

本文翻译自官网:https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/table/sourceSinks.html TableSource 提供访问存储在外部系统(数据库、key-value 存款,消息队列)或文件中的数据的权限。TableSource 在 TableEnviron...

FlinkSQL源码阅读-schema管理

在Flink SQL中, 元数据的管理分为三层: catalog-> database-> table, 我们知道Flink SQL是依托calcite框架来进行SQL执行树生产,校验,优化等等, 所以本文讲介绍FlinkSQL是如何来结合Calcite来进行元数据管理的. calcite开放的接口 public interface Schem...

WPF学习笔记:ComboBox的数据绑定

UI <UserControl x: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"...

maven和gradle的全局阿里云镜像代理

Maven:~/.m2/settings.xml <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-...