目录
前言
什么是Maven
Maven的优点
Maven的核心概念有哪些
POM是什么
什么是依赖管理
什么是插件
什么是仓库
概述
1、构建
2、依赖
安装与配置
1、下载
2、Windows Maven安装
1)解压到指定目录
2)配置环境变量
3)目录结构
3、配置
1.根目录创建一个文件夹
2.settings.xml文件配置
3.settings.xml文件配置镜像仓库
常用命令
创建Maven项目
1、手工创建
1)Maven项目目录结构
2)pom.xml配置文件
3)说明
JUnit
1、概念
2、使用步骤
常用API
1)@Test注解
2)assertEquals()方法
3)assertTrue()和assertFalse()方法
4)assertNotNull()和assertNull()方法
5)@Before和@After注解
6)@BeforeClass和@AfterClass注解
7)@Ignore注解
Lombok
1、@Data注解
2、@AllArgsConstructor和@NoArgsConstructor注解
3、@Builder注解
总结
前言
Maven是一个开源的项目管理工具,它可以帮助开发人员自动化构建、测试和部署Java项目
什么是Maven
Maven是一个开源的项目管理工具,它可以帮助开发人员自动化构建、测试和部署Java项目。
- 统一管理Jar包的工具(处理Jar包的依赖和冲突问题)
- 方便编译和测试,打包代码的工具
Maven的优点
Maven可以自动化构建、测试和部署Java项目,减少了手动操作的时间和错误率。它还可以管理项目的依赖关系,避免了版本冲突和依赖缺失的问题。
Maven的核心概念有哪些
Maven的核心概念包括项目对象模型(POM)、依赖管理、插件、仓库和生命周期。
POM是什么
POM是项目对象模型,它是Maven项目的核心文件,包含了项目的基本信息、依赖关系、构建配置和插件等信息。
pom.xml 文件是Maven项目的核心文件(非常重要,Maven项目不能没有pom)
pom.xml 他是干嘛的呢?
- 简单的来说,pom.xml就是对Moven项目的描述
什么是依赖管理
依赖管理是Maven的一个重要功能,它可以自动管理项目的依赖关系,包括下载、安装和更新依赖库;它提供了中央仓库,能帮我们自动下载构件。
搜索网址,各种依赖都在这个网址里,点击进入网址搜索自己所需的依赖(构建)如:servlet、jsp、test(Junit) 等.....:点击进入
这下面的是我常用的一些依赖
<!--依赖第三方配置-->
<dependencies>
<!-- 依赖 junit,jar包 便于test测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<!-- 依赖 servlet,jar包 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- 依赖 jsp,jar包 -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
<!--添加依赖Lombok 自动生成JavaBean 所需的 tos,hashCode等-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
<!-- 依赖jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- 依赖 mysql,jar包 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
<!--依赖gson jar包 -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
</dependencies>
<!--忽略test测试 -->
<!-- <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build> -->
什么是插件
插件是Maven的一个扩展机制,它可以扩展Maven的功能,例如编译、测试、打包和部署等。
什么是仓库
仓库是Maven的一个重要概念,它是存储依赖库和插件库的地方,包括本地仓库和远程仓库。
概述
Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具。Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构件,报告和文档的软件项目管理工具。
1、构建
Maven是一个优秀的构建工具。 它能够帮我们自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署。我们不需要也不应该一遍又一遍地输入命令,一次又一次地点击鼠标,我们要做的是使用Maven配置好项目,然后输入简单的命令(如:mvn clean install),Maven会帮我们处理那些烦琐的任务。
Java 项目开发过程中,构建指的是使用原材料生产产品的过程。
- 原材料
- Java 源代码
- 基于 HTML 的 Thymeleaf 文件
- 图片
- 配置文件
- 产品
- 一个可以在服务器上运行的项目
- 构建过程包含的主要的环节:
- 清理:删除上一次构建的结果,为下一次构建做好准备
- 编译:Java 源程序编译成 *.class 字节码文件
- 测试:运行提前准备好的测试程序
- 报告:针对刚才测试的结果生成一个全面的信息
- 打包
- Java工程:jar包
- Web工程:war包
- 安装:把一个 Maven 工程经过打包操作生成的 jar 包或 war 包存入 Maven 仓库
- 部署
- 部署 jar 包:把一个 jar 包部署到 Nexus 私服服务器上
- 部署 war 包:借助相关 Maven 插件(例如 cargo),将 war 包部署到 Tomcat 服务器上
-
脱离IDE环境构建项目
2、依赖
Maven还是一个依赖管理工具和项目信息管理工具。它提供了中央仓库,能帮我们自动下载构件。
如果 A 工程里面用到了 B 工程的类、接口、配置文件等等这样的资源,那么我们就可以说 A 依赖 B。例如:
- junit-4.12 依赖 hamcrest-core-1.3
- thymeleaf-3.0.12.RELEASE 依赖 ognl-3.1.26
- ognl-3.1.26 依赖 javassist-3.20.0-GA
- thymeleaf-3.0.12.RELEASE 依赖 attoparser-2.0.5.RELEASE
- thymeleaf-3.0.12.RELEASE 依赖 unbescape-1.1.6.RELEASE
- thymeleaf-3.0.12.RELEASE 依赖 slf4j-api-1.7.26
依赖管理中要解决的具体问题:
- jar 包的下载:使用 Maven 之后,jar 包会从规范的远程仓库下载到本地
- jar 包之间的依赖:通过依赖的传递性自动完成
- jar 包之间的冲突:通过对依赖的配置进行调整,让某些jar包不会被导入
安装与配置
1、下载
下载Maven地址:点击进入
2、Windows Maven安装
1)解压到指定目录
注意:
- Maven依赖于Java,因此必须保证已经安装JDK,并配置好环境变量
- 路径不要存在中文或空格
2)配置环境变量
注意:
- MAVEN_HOME或M2_HOME:指定Maven根目录
- Path:指定Maven相关的命令程序所在的bin目录
- MAVEN_HOME:D:\java\Maven\apache-maven-3.9.1-bin\apache-maven-3.9.1
- Path:%MAVEN_HOME%\bin
我以前配置过的,我就不重新配置了,那么我把配置步骤给大家展示出来!大家跟着步骤配置,就不会有什么问题的!
配置好之后试一下
$ mvn -v
测试通过如图
2.1) 注意如果是Linux或Mac系统
要编辑用户目录下的.bash_profile文件
# 编辑用户目录下的.bash_profile文件
# 编辑用户目录下的.bash_profile文件 $ vim .bash_profile ########### Maven1.0 Evn ################## # export MAVEN_HOME=/Users/circleus/apache-maven-3.5.4 # export MAVEN_HOME=/Users/circleus/aliyun-maven-3.6.0 # export PATH=$MAVEN_HOME/bin:$PATH ########### Maven2.0 Evn ################## # export M2_HOME=/Users/circleus/aliyun-maven-3.6.0 # export M2_HOME=/Users/circleus/apache-maven-3.5.4 # export PATH=$PATH:$M2_HOME/bin ########### Maven3.0 Evn ################## # export PATH=/Users/circleus/aliyun-maven-3.6.0/bin:$PATH
3)目录结构
- bin目录:包含mvn的运行脚本
- boot目录:包含一个类加载器的框架,maven使用它加载自己的类库
- conf目录:存放配置文件的目录(核心配置文件settings.xml文件)
- lib目录:包含maven运行时的依赖类库
3、配置
1.根目录创建一个文件夹
路径:D:\java\Maven\apache-maven-3.9.1-bin
创建:LocalAddress 文件夹
首先自己创建一个文件夹如:创建一个LocalAddress 文件夹
文件夹的命名是随意的,建议命名有意义的!!
2.settings.xml文件配置
路径:D:\java\Maven\apache-maven-3.9.1-bin\apache-maven-3.9.1\conf
配置:settings.xml文件
配置本地仓库
<!-- 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> D:\java\Maven\apache-maven-3.9.1-bin\LocalAddress</localRepository>
看图:
3.settings.xml文件配置镜像仓库
<!--阿里云Maven镜像配置-->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun.</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
注意:打开settings.xml,Ctrl+F搜索 http://0.0.0.0/ 跳到 mirrors
<mirrors>
在这里面配置阿里云镜像
</mirrors>
安装与配置差不多已经完成了,最后一步就是把settings.xml文件复制粘贴到LocalAddress 文件夹中
注意: 由于我以前配置好了,所以里面才存放了那么多文件,刚刚配置的时候是没有那么多的
常用命令
查看maven版本
mvn -v
编译
mvn compile
打包
mvn package
测试
mvn test
清除target
mvn clean
安装jar包到本地仓库中
mvn install
创建Maven项目
1、手工创建
1)Maven项目目录结构
- 项目名称
- src:项目源码
- main:存放主程序
- java:存放Java源码
- 包名+类名
- resoures:存放资源文件
- webapp:web资源
- java:存放Java源码
- test:存放测试程序
- java:存放Java测试源码
- 包名+类名
- resources:存放资源文件
- java:存放Java测试源码
- main:存放主程序
- target:此目录由maven生成
- pom.xml:Maven项目核心配置文件
- src:项目源码
2)pom.xml配置文件
在Maven中,<packaging>元素可以指定不同的打包类型。除了"jar"之外,常见的打包类型还包括:
- JAR(Java Archive):用于打包Java类文件和相关资源。
- WAR(Web Application Archive):用于打包Java Web应用程序,包含Java类文件、Web资源和部署描述符。
- EAR(Enterprise Application Archive):用于打包企业级Java应用程序,包含WAR文件和其他组件(如EJB模块)以及部署描述符。
- POM(Project Object Model):用于聚合多个子项目的父项目,本身不会生成任何实际的构建产物。
除了这些常见的打包类型,Maven还支持其他特殊的打包类型,如RAR(Resource Adapter Archive)和BUNDLE(OSGi Bundle)等,用于特定的应用场景。可以根据具体需求选择适当的打包类型来构建项目。
封装成jar包
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 项目坐标:GAV jar 坐标便于被别人使用,便于管理-->
<groupId>edu.nf</groupId><!--包名-->
<artifactId>demo</artifactId><!--项目名 模板-->
<version>1.0-SNAPSHOT</version><!--指定版本-->
<packaging>jar</packaging><!--封装成jar包-->
<name>ums</name>
<url>http://maven.apache.org</url>
<!--配置相关的属性-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!--依赖第三方配置-->
<dependencies>
<!--添加依赖 junit构件 方便测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<!--添加依赖 servlet-API 为什么要添加servlet依赖:因为运行servlet需要用到jar包,而这个servlet依赖可以帮助下载需要到的jar包-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
封装成war包
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 项目坐标:GAV jar 坐标便于被别人使用,便于管理-->
<groupId>edu.nf</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>ums</name>
<url>http://maven.apache.org</url>
<!--配置相关的属性-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!--依赖第三方配置-->
<dependencies>
<!--添加依赖 junit构件 方便测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<!--添加依赖 servlet-API 为什么要添加servlet依赖:因为运行servlet需要用到jar包,而这个servlet依赖可以帮助下载需要到的jar包-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
附上视频
纯手动创建一个Maven项目
3)说明
- 项目坐标
- groupId:包名(公司或组件域名倒序).项目名
- artifactId:项目名-模块名
- version:指定版本
- dependencies:依赖列表,指定本项目所依赖的第三方工具(构件/jar)
- archetype插件——自动创建符合maven规定的目录骨架
- 方法一:mvn archetype:generate
- 第一次构建需要连接网络,从官网下载相关的插件
- 可以配置国内镜像解决
JUnit
1、概念
JUnit是一个用于Java编程语言的测试框架,可以帮助开发人员编写自动化的单元测试和集成测试。
2、使用步骤
第一:在项目中添加JUnit依赖(在pom.xml配置Junit依赖)
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
第二:创建一个测试类,该类应该包含一些测试方法。在测试类中使用@Test注解 来标识测试方法。 在 java里 assertEquals这个的意思是表示比较实际值和期望值是否相等
package com.maven.demo ;
import org.junit.* ;
import org.junit.Assert.* ;
public class UserTest {
@Test
public void testHello() {
// 断言验证测试结果是否符合预期
Assert.assertEquals("hello",new User().sayHello()) ;
}
}
第三:在测试方法中编写测试代码。可以使用断言来验证测试结果是否符合预期。例如,使用assertEquals()方法来比较实际值和期望值。
第四:运行测试。可以使用IDE工具来运行测试,也可以使用Maven或Gradle等构建工具来运行测试。测试运行后,将会显示测试结果和测试覆盖率等相关信息。
常用API
1)@Test注解
用于标识一个测试方法。例如:
@Test
public void testAddition() {
int result = Calculator.add(2, 3);
assertEquals(5, result);
}
2)assertEquals()方法
用于比较实际值和期望值是否相等。例如:
int result = Calculator.add(2, 3);
assertEquals(5, result);
3)assertTrue()和assertFalse()方法
用于验证一个条件是否为真或为假。例如:
boolean flag = Calculator.isPositive(5);
assertTrue(flag);
flag = Calculator.isPositive(-5);
assertFalse(flag);
4)assertNotNull()和assertNull()方法
用于验证对象是否为空或不为空。例如:
String str = Calculator.getString();
assertNotNull(str);
str = null;
assertNull(str);
5)@Before和@After注解
用于标识测试方法之前和之后要执行的方法。例如:
@Before
public void setUp() {
Stystem.out.println("我先测试的")
}
@After
public void tearDown() {
Stystem.out.println("我最后测试")
}
public void tes(){
System.out.println("测试中...")
}
6)@BeforeClass和@AfterClass注解
用于标识所有测试方法之前和之后要执行的方法。例如:
@BeforeClass
public static void setUpClass() {
// 初始化测试数据
}
@AfterClass
public static void tearDownClass() {
// 清理测试数据
}
@BeforeClass
public static void setUpClass() {
// 初始化测试数据
}
@AfterClass
public static void tearDownClass() {
// 清理测试数据
}
7)@Ignore注解
用于标识某个测试方法需要被忽略。例如:
@Ignore("这个测试方法还没准备好")
@Test
public void testSomething() {
// 测试代码
}
Lombok
依赖包
<!--添加依赖Lombok 自动生成JavaBean 所需的 tos,hashCode等-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
Lombok是一个Java库,它可以通过注解自动化Java类的样板代码,从而简化开发人员的编程任务。
1、@Data注解
使用@Data注解可以自动生成JavaBean所需的getter、setter、toString、equals和hashCode方法。
@Data
public class Person {
private String name;
private int age;
}
2、@AllArgsConstructor和@NoArgsConstructor注解
使用@AllArgsConstructor和@NoArgsConstructor注解可以自动生成有参构造函数和无参构造函数。
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {
private String name;
private int age;
}
3、@Builder注解
使用@Builder注解可以自动生成Builder模式所需的代码,可以方便地创建复杂对象。
@Data
@Builder
public class Person {
private String name;
private int age;
private String address;
}
Person person = Person.builder()
.name("张三")
.age(20)
.address("北京市")
.build();
总结
好了,费了好大的劲,终于写好了,希望多多支持,有什么不对的地方请多多指出!