gradle初体验
1、下载
我们公司用的是4.8.1的版本
下载完成解压之后是这样的
2、配置环境变量
1、环境变量 ---> 新建 ---> 变量名GRADLE_HOME
、变量值(自己的解压路径)
2、Path ---> 新建 ---> %GRADLE_HOME%\bin
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 测试