Apache Ant+Apache Maven—>Gradle
一、Gradle安装与配置(基于Linux)
1. 安装包
2.安装与配置
二、Gradle基础
(一)Gradle项目目录结构介绍
(二)Groovy的简单语法
(三)Gradle配置文件的介绍
三、Gradle开发项目
(一)Gradle开发Spring项目
(二)Gradle开发Web项目
往期文章
Part1Gradle
1一、Gradle安装与配置(基于Linux)
1. 安装包
百度/bing搜索https://gradle.org/,进入gradle官网。
选择Install Gradle,进行页面的跳转。
随后向下翻,选择完全安装,Complete。
2.安装与配置
下载安装包之后解压至指定目录,本机是以/home/lambda/Gradle
为根目录,也可选择以/usr/local
为根目录。
首先确定本机是否配置了JDK的环境,若没有,则需要首先配置JDK的环境。
java -version
//查看是否配置JDK的环境。
其次编辑/etc/profile
文件,相关指令为
sudo su //提权,以管理员方式编辑
vim /etc/profile //使用vim编辑器编辑相关文件内容。
再次,在打开的profile文件中添加相关的路径。
export GRADLE_HOME=本机gradle所在的位置
export PATH=$GRADLE_HOME/bin:$PATH
最后,使配置文件生效
source /etc/profile
使用指令查看gradle是否安装成功
gradle -version
出现以上提示表示gradle安装成功
2二、Gradle基础
(一)Gradle项目目录结构介绍
src/main/java 放置正式代码目录 src/main/resources 放置正式配置文件目录 src/test/java 放置单元测试代码目录 src/test/resources 放置单元测试配置文件目录 src/main/webapp 放置页面元素 比如:js css html等
目录结构如图所示
(二)Groovy的简单语法
在idea项目中,找到tools,打开groovy console,即可编写groovy。
//groovy编程语言
println("Hello Groovy!");
//groovy可以省略语句中最末尾的分号
println("Hello Groovy!")
//groovy可以省略语句中的括号
println "Hello Groovy!"
//groovy定义变量,def关键字实现,是弱类型的。groovy会根据情况来自动匹配所对应的类型。
def i=15;
println i
//groovy定义集合类型
def list=["a","b"]
//向集合中添加元素
list << "c"
//从集合中取出元素
println(list.get(2))
//定义一个map集合
def map=["key1":"value1","key2":"value2"]
//向map中添加元素
map."key3"="value3"
//取出map中添加的元素
println(map.get("key3"))
综上:
groovy中打印语句是println,并且后续的括号可以省略 groovy语言中语句末尾的分号可以省略 使用def关键字定义变量或者集合等数据类型。用法与Java相似
groovy中的闭包
闭包本质上是一段代码块,在gradle中,主要是把闭包当作参数来使用。
步骤如下:
定义一个闭包
def pac={
println("Hello Groovy!")
}
定义一个方法,方法中的参数为闭包类型的参数
需要注意的是groovy中闭包类型使用Closure
def method(Closure closure){
closure()
}
调用方法method
method(pac)
例子:定义一个带参数的方法
def pac2={
v->
println("Hello ${v}")
}
def method2(Closure closure){
closure("world")
}
method2(pac2)
需要注意的是:
v代表的是一个参数,是需要调用者传入指定的值的,而在method中调用执行闭包时,需要在闭包中传入对应的参数值,保证结果的正确性。
(三)Gradle配置文件的介绍
依赖配置文件
gradle中所有的依赖都放置在这个dependencies之内
每一个jar包的坐标都有3个属性组成:group、name、version,类似于maven的三个坐标属性。
我们在gradle中添加jar包依赖的时候需要指定jar包的作用域。
dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' testCompile group:'junit',name:'junit',version:'4.12'}
仓库选择
repositories 指定所使用的仓库,其中mavenCentral表示中央仓库,此刻项目中所需要的jar包都会默认从中央仓库下载到本地指定目录。
其中gradle下载的依赖的本地地址为/home/lambda/Gradle/gradle reposity/caches/modules-2/files-2.1
目录下
repositories { mavenCentral()}
3三、Gradle开发项目
(一)Gradle开发Spring项目
首先选择gradle项目,并且选好相应的 gradle
仓库。
选择相应的gradle的本地仓库地址 将Run tests Using更改为Idea的环境。Build和Run使用默认的Gradle 选择本地的gradle,因为idea本身也自带gradle 选择项目所使用JDK配置,本项目中使用JDK1.8
更改配置文件build.gradle
plugins {
id 'java'
}
group 'org.example'
version '1.0-SNAPSHOT'
repositories {
mavenLocal()
mavenCentral()
}
/*gradle中所有的依赖都放置在这个dependencies之内
* 每一个jar包的坐标都有3个属性组成,
* group
* name
* version
* */
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
//引入Spring框架的依赖
implementation group: 'org.springframework', name: 'spring-context', version: '5.3.9'
//引入junit依赖
testImplementation group: 'junit', name: 'junit', version: '4.12'
//引入SpringTest的依赖
testImplementation group: 'org.springframework', name: 'spring-test', version: '5.3.13'
}
test {
useJUnitPlatform()
}
plugins:表示的是使用的环境,本处表示基于Java环境。 group和version表示本项目的项目id和对应的版本 repository:表示项目中使用的坐标依赖的仓库,手动加入mavenLocal(),表示优先从本地仓库加载对应的jar包 dependencies表示项目中所使用的依赖,(关于项目依赖的格式,见maven中央仓库)
创建对应的案例
/**
* The interface Account dao.
*
* @author lambda
*/
public interface AccountDao {
/**
* Find all list.
*
* @return the list
*/
List findAll();
}
@Repositorypublic class AccountDaoImpl implements AccountDao { @Override public List findAll() { System.out.println("列表查询成功......."); return null; }}
创建Spring的配置文件
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
">
<context:component-scan base-package="com.alibaba"/>
</beans>
此处开启自动化扫描,并使用注解来完成项目开发
创建测试类
首先创建测试基类,提前将junit的测试加入到Spring测试环境之中,并预先加载配置文件
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:beans.xml"})
public class BaseTest {
}
最后创建测试类,并继承测试基类
public class AccountTest extends BaseTest{
@Autowired
private AccountDaoImpl accountDao;
@Test
public void testFindAll(){
accountDao.findAll();
}
}
此处继承测试基类之后,按照要求注入需要使用到的对象,并使用@AutoWired注解完成属性的注入。最后使用单元测试。
(二)Gradle开发Web项目
创建Gradle项目
选择Java环境,并设置项目所在位置,并修改相应的参数,步骤如(一)所示
创建webapp目录
在src/main下创建一个webapp目录,并修改build.gradle目录的内容,使其成为一个web项目
创建一个webapp目录之后再次创建一个WEN-INF目录,在该目录下创建web.xml文件
文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<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_4_0.xsd"
version="4.0">
</web-app>
并在build.gradle文件中的plugin中添加war包支持。
在build.gradle中添加相关的依赖
plugins {
id 'java'
id 'war'
}
group 'org.example'
version '1.0-SNAPSHOT'
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
//添加相应的依赖
implementation group: 'org.springframework', name: 'spring-context', version: '5.3.9'
implementation group: 'org.springframework', name: 'spring-web', version: '5.3.14'
implementation group: 'org.springframework', name: 'spring-webmvc', version: '5.3.13'
compileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
compileOnly group: 'javax.servlet', name: 'jsp-api', version: '2.0'
testImplementation group: 'junit', name: 'junit', version: '4.12'
testImplementation group: 'org.springframework', name: 'spring-test', version: '5.3.13'
}
test {
useJUnitPlatform()
}
创建SpringMVC的配置文件并添加相应的约束
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd
">
<context:component-scan base-package="com.alibaba"/>
<!--此配置表示开启注解支持,一旦开启,映射器和处理器都被加载进来-->
<mvc:annotation-driven/>
<mvc:default-servlet-handler/>
<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<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_4_0.xsd"
version="4.0">
<!--配置前置控制器-->
<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:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
配置DispatcherServlet类,并完成相应的设置。
创建Controller类跳转视图
@Controller
public class GradleController {
@GetMapping("/list")
public String toList(Model model){
model.addAttribute("msg","这是第一个用gradle创建出来的web项目");
return "list";
}
}
使用@Controller注解进行实例化,表明这是Controller层的一个实例。 创建一个跳转视图的方法,返回值为跳转视图的名称,传入model对象,使模型视图对象携带相应的参数。 使用注解@GetMapping,定义返回视图的访问路径。可以在类的基础上添加父路径。
创建对应的页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<jsp:forward page="/list"></jsp:forward>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>List</title>
</head>
<body>
${msg}
</body>
</html>
当访问http://localhost:8080/项目名的时候就会跳转到该页面。
当到达该页面时,会自动跳转到http://localhost:8080/项目名/list.jsp中去,
测试结果