一、maven是什么
一个java项目构建工具
二、maven的作用
(1)依赖管理
不同框架整合,互相依赖jar包版本不同,版本不一样,程序跑起来就会报错。用maven管理jar包。
(2)跨平台构建项目
linux服务器上跑起来和我们在windows开发上跑出来的结果不一样。比如getBytes方法运行结果不一样,用maven解决这个问题。
(3)统一开发目录结构统一
不同ide工具,如eclipse、idea、jetbrains开发生成的项目文件结构不一样。用maven统一目录。
maven标准的结构如下:
三、简单了解maven
(1)maven的构成组件
pom、dependency
(2)pom
opm叫项目对象模型。maven把一个项目看成一个对象
(3)dependency
dependency叫依赖管理
(4)构成组件的关系
(5)构建生命周期
四、maven的安装配置
1.下载解压
Maven – 下载 Apache Maven
2.配置环境变量
需要先配置java环境,再配置:
MAVEN_HOME——>E:\apache-maven-3.8.5
PATH添加——>%MAVEN_HOME%\bin
3.测试是否配置好了
打开cmd输入mvn
五、maven的仓库
(1)分类
本地仓库、私服(一般是局域网内的maven仓库,一个公司一个团队的仓库,很多是公司自有不开源的jar包)、中央仓库(maven官方仓库,想要的jar包都有,类似于应用商店)
中央仓库网址:https://mvnrepository.com
(2)三类仓库之间的关系
获取jar包过程是,先在本地仓库找,没有就到私服找,私服没有才从中央仓库获取。
(3)配置本地仓库
默认仓库是C:\用户\当前用户名\.m2,存东西最好不要存C盘。要改为D:\myMaven\cangku的办法:
修改apache-maven-3.8.5/conf/settings.xml
把settings标签下的localRepository标签内的属性改一下,改成下面:
<localRepository>D:\myMaven\cangku</localRepository>
(4)配置中央仓库
目的:配置国内镜像,加速访问中央仓库
原因:中央仓库站点在国外,下载慢,所以要加速
配置方法:修改apache-maven-3.8.5/conf/settings.xml,在mirrors标签里面填加下面内容
<!--配置具体的仓库的下载镜像-->
<mirror>
<!--此镜像的唯一标识符,用来区分不同的mirror元素-->
<id>nexus-aliyun</id>
<!--对哪种仓库进行镜像,简单说就是替代哪个仓库-->
<mirrorOf>central</mirrorOf>
<!--镜像名称-->
<name>Nexus aliyun</name>
<!--镜像URL-->
<url>http: //maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
六、maven的坐标
(1)坐标是什么
描述仓库中资源的位置
(2)坐标的作用
maven会根据坐标找到并下载(如果不在本地),对应的资源
(3)坐标包含元素
groupid、artifactid、version
groupid:所有者团队。一般是域名反写,如:com.baidu
artifactid:项目名
version:当前项目版本号
(4)坐标的写法
比如,我想知道junit的坐标写法
找到想要的版本,点进去
复制即可
七、第一个maven项目(手工方式创建)
(1)创建项目目录结构
先创建一个“porject-helloWorld”的项目根文件夹,然后在porject-helloWorld下创建下图的项目目录结构
(2)编写代码
main>java>com>eCorp>HelloWorld.java
package com.eCorp;
import java.lang.String;
public class HelloWorld{
public String sayHello(){
return "hello world";
}
}
test>java>TestDemo.java
import com.eCorp.HelloWorld;
import org.junit.Assert;
import org.junit.Test;public class TestDemo{
@Test
public void testHelloWorld(){
HelloWorld helloWorld =new HelloWorld();
Assert.assertEquals("hello world", helloWorld.sayHello());
}}
(3)添加pom.xml
办法:找一个pom.xml文件模板,然后进行修改即可
步骤:
1.用winrar随便打开一个E:\apache-maven-3.8.5\lib下的jar,然后返回上级目录,搜索pom.xml
结果会有很多pom.xml,随便找一个打开复制过来
2.在项目根文件夹下创建pom.xml,把复制内容拷贝过来
3.修改pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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> <!--pom模型版本-->
<groupId>com.eCorp</groupId><name>project-helloWorld</name>
<artifactId>project-helloWorld</artifactId>
<version>1.0</version>
<packaging>jar</packaging> <!--生成结果保存形式-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<!--在中央仓库搜索junit,然后把坐标写法复制过来 -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
(4)构建maven项目
第一步:编译
步骤:
打开cmd输入:cd 项目根文件夹路径
然后输入:mvn compile
编译报错:
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] 不再支持源选项 5。请使用 7 或更高版本。
[ERROR] 不再支持目标选项 5。请使用 7 或更高版本。
[INFO] 2 errors
产生原因:maven默认是使用jdk1.4编译的。比本地安装jdk版本低就会报错
解决办法:
比如我本地安装的是jdk17,就把下面代码放到E:\apache-maven-3.8.5\conf\pom.xml里的 <profiles>标签里面
<profile>
<id>jdk-17</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>17</jdk>
</activation>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
</profile>
编译结果:编译成功会在项目根文件夹下生成一个叫target的文件,编译的.class字节码文件都在里面
第二步(可选):清理编译结果
mvn clean //会删除target文件
第三步:测试
mvn test //执行test测试文件夹里面的java代码,并生成测试报告
测试报告—基本信息位置:项目名\target\surefire-reports\TestDemo.txt
测试报告—详细信息位置:项目名\target\surefire-reports\TEST-TestDemo.xml
第四步:打包
mvn package //打包项目成jar文件,在target下生成project-helloWorld-1.0.jar
第五步:把打包结果放到本地仓库
mvn install //存放位置:本地仓库文件夹\【com\eCorp<groupId>】\【project-helloWorld<artifactId>】\【1.0<version>】\project-helloWorld-1.0.jar