Maven项目管理-随笔(入门)
Maven是一个开源的项目管理工具,它可以帮助开发人员自动化构建、测试和部署Java项目Maven是一个开源的项目管理工具,它可以帮助开发人员自动化构建、测试和部署Java项目。统一管理Jar包的工具(处理Jar包的依赖和冲突问题)方便编译和测试,打包代码的工具依赖管理是Maven的一个重要功能,它可以自动管理项目的依赖关系,包括下载、安装和更新依赖库;它提供了中央仓库,能帮我们自动下载构件。点击
目录
3)assertTrue()和assertFalse()方法
4)assertNotNull()和assertNull()方法
2、@AllArgsConstructor和@NoArgsConstructor注解
前言
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();
总结
好了,费了好大的劲,终于写好了,希望多多支持,有什么不对的地方请多多指出!
更多推荐
所有评论(0)