学习目标
第一章-Maven相关的概念
知识点-Maven介绍
1.目标
- 能够了解Maven的作用
2.路径
- 什么是Maven
- Maven的作用
- Maven的好处
3.讲解
3.1什么是Maven
Maven是项目进行模型抽象,充分运用的面向对象的思想,Maven可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。
项目有阶段: 编译项目 、项目测试、 运行项目 、 清除项目的缓存 、 发布项目 、 打包安装....
说白了: Maven是由Apache开发的一个工具。用来管理java项目(依赖(jar)管理, 项目构建, 分模块开发 ).
3.2Maven的作用
-
依赖管理: maven对项目的第三方构件(jar包)进行统一管理。向工程中加入jar包不要手工从其它地方拷贝,通过maven定义jar包的坐标(jar包的唯一标识),自动从maven仓库中去下载到工程中。
-
项目构建: maven提供一套对项目生命周期管理的标准,开发人员、和测试人员统一使用maven进行项目构建。项目生命周期管理:编译、测试、打包、部署、运行。
-
maven对工程分模块构建,提高开发效率。 (后面Maven高级会涉及)
3.3 Maven的好处
- 使用普通方式构建项目
-
使用Maven构建项目
4.小结
- Maven是Apache开发的一个项目管理工具. 用来管理java项目的
- Maven的作用
- 依赖(jar)管理
- 项目构建
- 分模块开发(后面再讲)
知识点-Maven仓库和坐标
1.目标
- 能够理解Maven仓库的作用
2.路径
- Maven的仓库
- Maven的坐标
3.讲解
3.1Maven的仓库
仓库其实就是存放 jar包 的位置 , 仓库其实就是一个文件夹!
仓库名称 | 作用 |
---|---|
本地仓库 | 相当于缓存,工程第一次会从远程仓库(互联网)去下载jar 包,将jar包存在本地仓库(在程序员的电脑上)。第二次不需要从远程仓库去下载。先从本地仓库找,如果找不到才会去远程仓库找。 |
中央仓库 | 仓库中jar由专业团队(maven团队)统一维护。中央仓库的地址:https://mvnrepository.com/ |
远程仓库 | 在公司内部架设一台私服,其它公司架设一台仓库,对外公开。 |
3.2 Maven的坐标
Maven的一个核心的作用就是管理项目的依赖(其实就是jar包),引入我们所需的各种jar包等。为了能自动化的解析任何一个Java构件(jar包),Maven必须将这些Jar包或者其他资源进行唯一标识,这是管理项目的依赖的基础,也就是我们要说的坐标。包括我们自己开发的项目,也是要通过坐标进行唯一标识的,这样才能才其它项目中进行依赖引用。坐标的定义元素如下:
- groupId:项目组织唯一的标识符,实际对应JAVA的包的结构 (一般写公司的组织名称 eg:com.itheima,com.alibaba)
- artifactId: 项目的名称
- version:定义项目的当前版本
例如:要引入druid,只需要在pom.xml配置文件中配置引入druid的坐标即可: dependency : 翻译过来叫做:依赖
<!--druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.9</version>
</dependency>
4.小结
- 仓库(本地仓库,中央仓库,远程仓库(私服))
- 先从本地仓库找
- 如果有, 就直接获得使用
- 如果没有, 从中央仓库找, 自动的下载到本地仓库
- 先从本地仓库找
- 通过坐标从仓库里面找到对应的jar使用
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.9</version>
</dependency>
第二章-Maven的安装
知识点-Maven的安装
1.目标
- 能够掌握Maven的安装
2.路径
- 下载Maven
- 安装Maven
- Maven目录介绍
- 配置环境变量
- 配置本地仓库
- 测试Maven是否安装成功
3.讲解
3.1下载Maven
3.2 安装Maven
将Maven压缩包解压,即安装完毕
3.3 Maven目录介绍
3.4 配置环境变量
- 进入环境变量
- 配置MAVEN_HOME和Path
3.5 配置本地仓库【重要】
- 默认情况下,maven的仓库会放在c:/user/自己的用户名/.m2/repository
- 给大家发的压缩包就是里面有很多的jar包,大家只要解压即可,这就等于是自己的仓库。
3.5.1 将软件文件夹中的Repository (仓库)解压
3.5.2 配置本地仓库
在maven的安装目录中conf/ settings.xml文件,在这里配置本地仓库
- 示例代码
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>E:/source/04_Maven/repository_pinyougou</localRepository>
3.5.3 配置国内镜像
默认情况下,maven会去它自己的仓库(中央仓库)里面下载jar包,由于仓库在国外,所以下载会比较慢。一般会配置成国内的镜像,比如:阿里云的镜像
在setting.xml文件中的
标签中追加以下内容即可
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
3.6 测试Maven安装成功
打开cmd本地控制台,输入mvn -version
4.小结
- 解压maven,即表示安装maven
- 配置maven
- 配置环境变量 : MAVEN_HOME
- 配置本地仓库的地址路径,默认存放的是在C:/用户目录下/自己计算机名/.m2/reposirtory
- 配置阿里云的镜像地址,方便我们以后下jar包。
- 注意: 在修改settings.xml的时候,不要删错,否则maven不能正常工作了!
知识点-IDEA集成Maven
1.目标
- 能够掌握IDEA配置本地Maven
2.路径
- 在IDEA(当前的项目)配置Maven
- 配置默认(新项目)的Maven环境
3.讲解
3.1 配置Maven(针对当前项目)
- 配置Maven
3.2. 配置Maven (针对新项目)
每次创建Maven工程的时候,总是需要重新选择Maven配置信息,那是因为默认的Maven环境不是我们当前的maven环境,所以需要配置。配置流程如下图:
- 选择默认的配置
- 2018版本的配置
- 2020版本的配置
- 进入配置
- 重启IDEA, 就可以生效了
4.小结
-
配置默认Maven环境 目的: 为了下次创建的时候 不需要再选择Maven了, 使用的就是这个默认环境的
-
配置三块
- maven_home
- Maven的配置文件
- 本地仓库的路径
第三章-使用IDEA创建Maven工程
实操-创建java工程 【了解】
1.目标
- 能够使用IDEA创建java的Maven工程
2.路径
- 创建java工程
- java工程目录结构
- 编写Hello World!
3.讲解
3.1采用骨架(模板)创建java工程
3.2 java工程目录结构
- 需要main/java文件夹变成 源码的目录(存放java源码)
- 需要test/java文件夹变成 测试源码的目录(存放单元测试)
-
创建resources目录, 变成资源的目录
-
整体结构
3.3 编写Hello World!
4.小结
- JavaSe工程的骨架
- 项目的结构
实操-创建javaweb工程【了解】
1.目标
- 能够使用IDEA创建javaweb的Maven工程
2.路径
- 创建javaweb工程
- 发布javaweb工程
- 浏览器访问效果
3.讲解
3.1 创建javaweb工程
- 创建javaweb工程与创建javase工程类似,但在选择Maven骨架时,选择maven-archetype-webapp即可:
- 创建好的javaweb工程如下:
- 所以,要手动创建一个java目录用于编写java代码:
- 还要将java目录添加为Source Root:
3.2 发布javaweb工程
3.3 浏览器访问效果
4.小结
- 选择骨架选择webapp
- pom.xml
- web工程结构
实操-不使用骨架创建工程【重点】
1.目标
上面是使用骨架来创建工程的,如果不使用骨架,怎样创建工程呢?
2.路径
- 不使用骨架创建javase项目
- 不使用骨架创建javaweb项目
3.讲解
3.1.不使用骨架创建javase项目
- 第一步
- 第二步
- 第三步
- 第四步
3.2.不使用骨架创建javaweb项目
- 安装idea插件:JBLJavaToWeb
- 第一步
- 第二步
- 第三步
- 第四步, 在项目上右键 --- 选中JBLJavaToWeb来转化项目即可,下图即是最终的结果:
4.小结
不使用骨架更快的, 单独有视频和笔记
第四章-Maven的常用命令【重点】
知识点-Maven的常用命令
1.目标
- 掌握Maven的常用命令
2.路径
- clean命令
- compile命令
- test命令
- package命令
- install命令
3.讲解
3.1clean命令
清除编译产生的target文件夹内容,可以配合相应命令一起使用,如mvn clean package, mvn clean test
3.2 compile命令
该命令可以对src/main/java目录的下的代码进行编译
3.3 test命令
测试命令,或执行src/test/java/下所有junit的测试用例
- 在src/test/java下创建测试类DemoTest
- 执行test命令测试
- 控制台显示测试结果
3.4 package命令
mvn package,打包项目
- 如果是Java的项目,打包成jar包
- 如果是JavaWeb的项目,打包成war包
打包后的项目会在target目录下找到
3.5 install命令
mvn install,作用:把项目打包后将打出来的包安装在本地仓库 , 仓库里面一般放的是jar包,一般打包出来就是打出来一个jar包,然后把这个jar包放到仓库里面管理起来。
安装完毕后,在本地仓库中可以找到itheima_javase_demo的信息
4.小结
-
命令作用
- clean 用来清除编译后的文件(target文件夹里面的)【一般清缓存】
- compile 编译
- test 执行单元测试
- package 打包 (javaSe-->jar, javaweb-->war)
- install 把项目打包之后安装到本地仓库
-
生命周期
当我们执行了install 也会执行compile test package
第五章-依赖管理和插件【重点】
知识点-依赖管理
1.目标
- 能够掌握依赖引入的配置方式
2.路径
- 导入依赖
- 导入依赖练习
- 依赖范围
3.讲解
3.1导入依赖 (导入jar包)
导入依赖坐标,无需手动导入jar包就可以引入jar。
-
步骤:
- 在pom.xml中使用
标签引入依赖。 - maven会去本地仓库里面找jar包,如果本地仓库没有,那么就联网去中央仓库里面拿jar包下来。
- 在pom.xml中使用
-
坐标怎么找
-
做项目/工作里面 都有整套的依赖的, 不需要背诵的.
-
去Maven中央仓库找, 复制粘贴.
http://mvnrepository.com/
3.1.1 导入junit的依赖
- 导入junit坐标依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
- 进行单元测试
import org.junit.Test;
public class DemoTest {
@Test
public void test1(){
System.out.println("test running...");
}
}
3.1.2 导入servlet的依赖
- 创建Servlet,但是发现报错,原因是没有导入Servlet的坐标依赖
- 导入Servlet的坐标依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
- 原有报错的Servlet恢复正常
3.2 依赖范围
在具体的某一个周期|时间段内,这个jar包还能不能用? SpringBoot
-
compile 编译、测试、运行,A在编译时依赖B,并且在测试和运行时也依赖
例如:struts-core、spring-beans, C3P0,Druid。打到war包或jar包
-
provided 编译、和测试有效,A在编译和测试时需要B
例如:servlet-api就是编译和测试有用,在运行时不用(tomcat容器已提供)
不会打到war
-
runtime:测试运行有效,
例如:jdbc驱动包 ,在开发代码中针对java的jdbc接口开发,编译不用
在运行和测试时需要通过jdbc驱动包(mysql驱动)连接数据库,需要的
会打到war
-
test:只是测试有效,只在单元测试类中用
例如:junit
不会打到war
-
按照依赖强度,由强到弱来排序:(理解)
compile> provided> runtime> test
4.小结
-
坐标不需要背, 做项目时候/工作开发 都有整套的坐标. 如果是导入一些特定, 可以查阅网站,直接拷贝
-
作用范围
- compile 编译、测试、打包运行部署 有效 【默认】
- provided 编译, 测试 有效. 打包运行部署 无效, 因为运行环境里面已经有了这个jar包
- runtime 测试、打包运行部署 有效 编译无效 mysql
- test 只是测试有效,只在单元测试类中用
-
Servlet,JSP 这类jar 需要加上provided , 因为部署到Tomcat里面. tomcat里面有, 如果没有加上provided , 可能会导致jar 冲突
单元测试的 建议加上test
知识点-Maven插件
1.目标
Maven是一个核心引擎,提供了基本的项目处理能力和建设过程的管理,以及一系列的插件是用来执行实际建设任务。maven插件可以完成一些特定的功能。例如,集成jdk插件可以方便的修改项目的编译环境;集成tomcat插件后,无需安装tomcat服务器就可以运行tomcat进行项目的发布与测试。在pom.xml中通过plugin标签引入maven的功能插件。
2.路径
- JDK编译版本的插件
- Tomcat的插件
3.讲解
3.1 JDK编译版本的插件【了解】
指定maven使用什么版本的规则来编译咱们的工程代码,如果不设置,默认采用的是1.5的版本来编译
- 使用properties
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
- 使用插件
<build>
<plugins>
<!--jdk编译插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
3.2 Tomcat7服务端的插件
- 添加tomcat7插件
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 指定端口 -->
<port>82</port>
<!-- 请求路径 -->
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
注意: Maven的中央仓库中只有Tomcat7.X版本的插件,而之前我们使用的是8.X的版本,如果想使Tomcat8.X的插件可以去其他第三方仓库进行寻找,或者使用IDEA集成外部Tomcat8极其以上版本,进行项目的发布。
4.小结
<build>
<plugins>
<plugin></plugin>
<plugin></plugin>
</plugins>
</build>
第六章maven 私服【了解】
知识点- 私服搭建
1.目标
2.路径
- Maven私服概述
- 搭建私服环境
3.讲解
3.1Maven私服概述
公司在自己的局域网内搭建自己的远程仓库服务器,称为私服, 私服服务器即是公司内部的 maven 远程仓库, 每个员工的电脑上安装 maven 软件并且连接私服服务器,员工将自己开发的项目打成 jar 并发布到私服服务器,其它项目组从私服服务器下载所依赖的构件(jar)。私服还充当一个代理服务器,当私服上没有 jar 包会从互联网中央仓库自动下载,如下
图 :
3.2.搭建私服环境
3.2.1下载 nexus
Nexus 是 Maven 仓库管理器, 通过 nexus 可以搭建 maven 仓库,同时 nexus 还提供强大的仓库管理功能,构件搜索功能等。
下载地址: http://www.sonatype.org/nexus/archived/
下载: nexus-2.12.0-01-bundle.zip
3.2.2安装 nexus
解压 nexus-2.12.0-01-bundle.zip,进入 bin 目录:
**以管理员权限运行命令行,进入 bin 目录,执行 nexus.bat install **
安装成功在服务中查看有 nexus 服务:
3.2.3卸载nexus
cmd 进入 nexus 的 bin 目录,执行: nexus.bat uninstall
3.2.4启动 nexus
-
方式一
cmd 进入 bin 目录,执行nexus.bat start
-
方式二
直接启动 nexus 服务
3.2.5登录
-
访问: http://localhost:8081/nexus/
查看 nexus 的配置文件 conf/nexus.properties ,里面有端口号
- 点击右上角的 Log in,输入账号和密码 登陆 (账号admin,密码admin123 )
- 登录成功
3.2.6仓库类型
nexus 的仓库有 4 种类型:
- hosted,宿主仓库, 部署自己的 jar 到这个类型的仓库,包括 releases 和 snapshot 两部
分, Releases 公司内部发布版本仓库、 Snapshots 公司内部测试版本仓库 - proxy,代理仓库, 用于代理远程的公共仓库,如 maven 中央仓库,用户连接私服,私
服自动去中央仓库下载 jar 包或者插件。 - group,仓库组,用来合并多个 hosted/proxy 仓库,通常我们配置自己的 maven 连接仓
库组。 - virtual(虚拟):兼容 Maven1 版本的 jar 或者插件
4.小结
-
对着文档搭建一下就OK
-
安装的时候需要以
管理员
身份 -
路径不要有中文
知识点-Maven私服的使用
1.目标
2.路径
- 将项目发布到私服
- 从私服下载 jar 包
3.讲解
3.1.将项目发布到私服
3.1.1需求
企业中多个团队协作开发通常会将一些公用的组件、开发模块等发布到私服供其它团队或模块开发人员使用。
本例子假设多团队分别开发 . 某个团队开发完在common_utils, 将 common_utils发布到私服供 其它团队使用.
3.1.2配置
第一步: 需要在客户端即部署 common_utils工程的电脑上配置 maven环境,并修改 settings.xml文件(Maven配置文件), 配置连接私服的用户和密码 。此用户名和密码用于私服校验,因为私服需要知道上传的账号和密码是否和私服中的账号和密码一致 (配置到
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
releases: 连接发布版本项目仓库
snapshots: 连接测试版本项目仓库
第二步: 在需要发布配置项目 pom.xml . 配置私服仓库的地址,本公司的自己的 jar 包会上传到私服的宿主仓库,根据工程的版本号决定上传到哪个宿主仓库,如果版本为 release 则上传到私服的 release 仓库,如果版本为snapshot 则上传到私服的 snapshot 仓库 .
<distributionManagement>
<repository>
<id>releases</id>
<url>http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
- 注意: pom.xml 这里
和 settings.xml 配置 对应!
3.1.3测试
1、 首先启动 nexus ,启动私服
2、 对 common_utils工程执行 deploy 命令
根据本项目pom.xml中version定义决定发布到哪个仓库,如果version定义为snapshot,执行 deploy后查看 nexus 的 snapshot仓库, 如果 version定义为 release则项目将发布到 nexus的 release 仓库,本项目将发布到 snapshot 仓库:
3.2从私服下载 jar 包
3.2.1需求
没有配置 nexus 之前(没有搭建私服),如果本地仓库没有,去中央仓库下载,通常在企业中会在局域网内部署一台私服服务器, 有了私服本地项目首先去本地仓库找 jar,如果没有找到则连接私服从私服下载 jar 包,如果私服没有 jar 包私服同时作为代理服务器从中央仓库下载 jar 包,这样做的好处是一方面由私服对公司项目的依赖 jar 包统一管理,一方面提高下载速度, 项目连接私服下载 jar 包的速度要比项目连接中央仓库的速度快的多。
本例子测试从私服下载 common_utils工程 jar 包。
3.2.2在 setting.xml 中配置仓库
在客户端的 maven里面的setting.xml 中配置私服的仓库, 因为我们现在要通过maven去私服里面下载jar包了,所以必须要告诉maven,私服在哪里?,由于 setting.xml 中没有 repositories 的配置标签需要使用 profile 定义仓库。(配置在<profiles>
标签下)
<profile>
<!--profile 的 id-->
<id>dev</id>
<repositories>
<repository>
<!--仓库 id, repositories 可以配置多个仓库,保证 id 不重复-->
<id>nexus</id>
<!--仓库地址,即 nexus 仓库组的地址-->
<url>http://localhost:8081/nexus/content/groups/public/</url>
<!--是否下载 releases 构件-->
<releases>
<enabled>true</enabled>
</releases>
<!--是否下载 snapshots 构件-->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!-- 插件仓库, maven 的运行依赖插件,也需要从私服下载插件 -->
<pluginRepository>
<!-- 插件仓库的 id 不允许重复,如果重复后边配置会覆盖前边 -->
<id>public</id>
<name>Public Repositories</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
使用 profile 定义仓库之后需要激活才可生效。
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
3.2.3测试从私服下载 jar 包
- 删掉本地仓库的common_utils
在前面把项目发布到私服的时候,maven也会先把jar包安装到本地仓库里面。这里为了测试一会的jar包真的是来自于私服,所以要先去把本地仓库的jar包给删除掉。
- 创建test_common_utils工程 , 添加依赖
- 出现如下日志
4.小结
- 对着文档操作
知识点-把第三方 jar 包放入本地仓库和私服
1.目标
2.路径
- 导入本地库
- 导入私服
- 参数说明
3.讲解
我们有一些jar包,但是这些jar包不存在于中央仓库,也不存在私服仓库,它就是一个jar包的文件。maven项目现在想用这样的jar包,怎么办?此时就可以把这个单独|独立的jar包给安装到本地仓库或者到私服的仓库
3.1.导入本地库
- 随便找一个 jar 包测试, 可以先 CMD进入到 jar 包所在位置,运行
mvn install:install-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dfile=fastjson-1.1.37.jar -Dpackaging=jar
3.2.导入私服
需要在 maven 软件的核心配置文件 settings.xml 中配置第三方仓库的 server 信息 , 在
标签里面配置
<server>
<id>thirdparty</id>
<username>admin</username>
<password>admin123</password>
</server>
才能执行一下命令
mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dpackaging=jar -Dfile=fastjson-1.1.37.jar -Durl=http://localhost:8081/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty
3.3.参数说明
-DgroupId 和 -DartifactId 构成了该 jar 包在 pom.xml 的坐标,项目就是依靠这两个属性定位。自己起名字也行。
Dfile 表示需要上传的 jar 包的绝对路径。
Durl 私服上仓库的位置,打开 nexus——>repositories 菜单,可以看到该路径。
DrepositoryId 服务器的表示 id,在 nexus 的 configuration 可以看到。
Dversion 表示版本信息。
关于 jar 包准确的版本:
包的名字上一般会带版本号,如果没有那可以解压该包,会发现一个叫 MANIFEST.MF 的文件
这个文件就有描述该包的版本信息。
比如 Specification-Version: 2.2 可以知道该包的版本了。
上传成功后,在 nexus 界面点击 3rd party 仓库可以看到这包。
4.小结
- 有些jar中央仓库没有(eg:oracle驱动), 从官网/网络上下载下来, 安装到本地仓库. 我们的Maven项目就可以使用了
- 具体操作参考文档
第七章-Lombok
知识点-Lombok介绍和配置
1.目标
2.路径
- 什么是Lombok
- Lombok的作用
- Lombok的配置
3.讲解
3.1什么是Lombok
Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。
官网: https://www.projectlombok.org/
3.2Lombok的作用
1. 通过添加注解的方式,Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。
例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量,一旦修改属性,就容易出现忘记修改对应方法的失误,使代码看起来更简洁些。
3.3Lombok的配置
使用Lombok 有两个工作要做:
- 安装idea的插件
- 在项目里面添加 lombok的依赖。
- 添加maven依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
-
安装插件
使用Lombok还需要插件的配合,使用开发工具为idea. 打开idea的设置,点击Plugins,点击Browse repositories,在弹出的窗口中搜索lombok,然后安装即可
-
解决编译时出错问题
编译时出错,可能是没有enable注解处理器。Annotation Processors > Enable annotation processing。设置完成之后程序正常运行。
4.小结
- Lombok: 就是一个工具, 简化java代码开发
- Lombok环境
- 添加坐标
- 添加插件
知识点-Lombok的常用注解
1.目标
2.路径
- @Data
- @Getter/@Setter
- @ToString
- @NoArgsConstructor, @AllArgsConstructor
3.讲解
3.1@Data
@Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
@Data
public class User implements Serializable{
private Integer id;
private String username;
private String password;
private String address;
private String nickname;
private String gender;
private String email;
private String status;
}
3.2@Getter/@Setter
如果觉得@Data太过残暴不够精细,可以使用@Getter/@Setter注解,此注解在属性上,可以为相应的属性自动生成Getter/Setter方法.
public class User implements Serializable{
@Setter
@Getter
private Integer id;
private String username;
private String password;
private String address;
private String nickname;
private String gender;
private String email;
private String status;
}
3.3@ToString
类使用@ToString注解,Lombok会生成一个toString()方法,默认情况下,会输出类名、所有属性(会按照属性定义顺序),用逗号来分割。 通过exclude属性指定忽略字段不输出,
@ToString(exclude = {"id"})
public class User implements Serializable{
private Integer id;
private String username;
private String password;
private String address;
private String nickname;
private String gender;
private String email;
private String status;
}
3.4@xxxConstructor
- @NoArgsConstructor: 无参构造器
@NoArgsConstructor
public class User implements Serializable{
private Integer id;
private String username;
private String password;
private String address;
private String nickname;
private String gender;
private String email;
private String status;
}
- @AllArgsConstructor: 全参构造器
@AllArgsConstructor
public class User implements Serializable{
private Integer id;
private String username;
private String password;
private String address;
private String nickname;
private String gender;
private String email;
private String status;
}
4.小结
4.1注解
-
@Data
- 用在类上面的 , 生成set,get, toString, hashCode,canEqual、equals方法
-
@Getter
- 用在字段, 生成get方法
-
@Setter
- 用在字段, 生成set方法
-
@ToString
- 用在类上面的 生成toString方法
-
@xxxConstructor
- 用在类上面的 生成构造方法 (只能生成无参和全参的构造方法)
4.2优缺点
优点:
- 能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,提高了一定的开发效率
- 让代码变得简洁,不用过多的去关注相应的方法
- 属性做修改时,也简化了维护为这些属性所生成的getter/setter方法等
缺点:
- 不支持多种参数构造器的重载 , 要不就是无参,要不就是全参 , 如果希望做成只有一个参数、或者几个参数的构造函数,需要自己手动添加。
- 虽然省去了手动创建getter/setter方法的麻烦,但大大降低了源代码的可读性和完整性,降低了阅读代码的舒适度
练习:
把linkman项目,换成maven项目!
1. 把jar包换成pom.xml中依赖
2. 使用tomcat7来跑项目。
总结
maven:
什么是maven?
maven是一个项目的管理和构建工具,可以帮助我们管理项目的依赖和执行项目的构建工作(编译、测试、打包、安装、部署、运行)
怎么使用maven:
1. 解压安装maven ,得到maven的程序
2. 配置本地仓库 , 主要是用来存放jar包
2.1 仓库划分:
a. 本地仓库
b. 中央仓库
c. 远程仓库
3. 最好也配置阿里云的镜像地址!
- 常用命令
clean: 清除缓存...
compile: 编译项目
test: 运行项目的单元测试
package: 打包,jar包| war包
install: 安装,把项目打成jar包,安装到本地仓库。
-
依赖管理
1. 要想用一个项目|一个jar包的功能,就把这个项目|jar包的坐标添加进来即可 <dependencies> <dependency> <groupId></groupId> <artifectId></artifectId> <version></version> </dependency> </dependencies> 2. 项目|jar包的坐标去哪里找呀? 去maven的中央仓库里面找即可 3. 依赖的范围: compile: 全程有效,不管什么阶段都要用到这个jar包 ,默认就是这个范围 test: 单元测试有效 provided: 这个jar包不会跟着到运行阶段,由运行环境提供! 4. 插件: 4.1 编译插件 默认情况下,maven编译java代码,使用1.5的版本来编译,需要修改成1.8 4.2 tomcat7插件