• gradle初体验


    1、下载

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

    我们公司用的是4.8.1的版本

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

    2、配置环境变量

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

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

    3、验证 cmd 输入 gradle -v

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

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

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

    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的仓库地址

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

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

    2、设置web目录

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

    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目录

    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

    3.6 配置Tomcat并测试

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

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

    2、创建子工程

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

    这里还是选择gradle Java项目

    设置子工程名

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

    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 测试

  • 相关阅读:
    出现 could not open jvm.cfg 的解决办法
    powerdesigner相关概念理解
    UML建模类图
    LAMP环境折腾
    ThinkPHP学习笔记1
    ubuntu14在kDE界面下的关于eclipse提示框黑色背景的修改!
    LAMP环境安装与apache配置
    Unix网络编程---第四次作业
    Unix网络编程---第三次作业
    Unix网络编程---第二次作业
  • 原文地址:https://www.cnblogs.com/shaoyu/p/15028426.html
Copyright © 2020-2023  润新知