目录
1、Maven简介
(1)传统项目管理状态分析
- jar包不统一,jar包不兼容
- 工程升级维护过程中操作很繁琐
- ....
- ....
(2)Maven是什么
本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
POM(Project Object Model):项目对象模型
(3)Maven的作用
- 项目构建:提供标准的、跨平台的自动化项目构建方式
- 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间版本冲突问题
- 统一开发结构:提供标准的、统一的项目结构
上面的这个为Java项目的结构。
(4)Maven 就其本身来说只是提供一个执行环境,它并不知道需要在项目上完成什么操作,真正操作项目的是插件(plugin),比如编译 Java 有 Compiler 插件 。
2、Maven下载与安装,以及配置环境变量
(1)下载地址:Maven – Download Apache Maven
(2)下载对应版本后,解压到一个你知道的文件夹
(3)环境变量配置
- 依赖jar包,需要配置JAVA_HOME
- 设置Maven自身的运行环境,需要配置MAVEN_HOME
在高级系统设置里,点击新建,输入变量名MAVEN_HOME,变量值为Maven的安装目录,一直到bin目录的上一级目录 。
进去之后,点击新建,输入%MAVEN_HOME%\bin
一直保存即可。
(3)测试是否安装和配置成功
3、Maven基础概念
(1)仓库
用于存储资源,包含各种jar包
- 本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源。
- 私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源。
- 中央(心)仓库:Maven团队维护,存储所有资源的仓库。
私服和中心仓库都属于远程仓库。
远程仓库为非电脑本地上的仓库。
从Maven中心仓库下载jar包依赖公网,速度受限,并且无法上传自己的 jar 包。所以一般会利用 nexus 搭建一个内部的 maven 仓库(私服),自动化构建时Maven先访问本地仓库(一个存放 jar 包的目录 ),本地仓库没有的时候从内部的maven 私有仓库(私服)下载到本地仓库,内部的Maven仓库也无时,会从Maven中心(镜像)仓库下载到本地的 maven 仓库。
私服的作用:
- 速度更快,效率高
- 保存具有版权的资源,包含购买或者自主研发的jar(中央仓库的jar都是开源的,不能存储具有版权的资源)
- 一定范围内共享资源,仅对内部开放,对外不共享。
(2)坐标
Maven中仓库资源: Central Repository:
4、仓库基本配置
(1)本地仓库配置
绿色的是注释,是不生效的部分。
Maven启动后,会自动保存下载的资源到本地仓库。
- 默认的位置:<localRepository>${user.home}/.m2/repository</localRepository>
- 我设置的位置:<localRepository>D:\software\Maven\repo</localRepository>
(2)远程仓库配置
- Maven默认连接的仓库位置
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
- 在setting文件中配置阿里云镜像仓库
<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>
</mirrors>
5、 Maven项目(手工制作)
项目结构
手工制作的话,就要在电脑本地创建一个类似于上图所示层次分明的文件夹。main文件夹中的Java文件夹存放Java代码,test文件夹中的Java文件夹存放Java测试代码。(可随便自己创建,能运行就行)
根据层级规范的话,Java目录后不要紧接着放Java代码,可先创建一个com文件夹,再在com文件夹里创建一个类似于itheima的文件夹,再放入Java代码。
- 在src同层目录下创建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/maven- v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itheima</groupId>
<artifactId>java-project</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
(1)在跳出来的终端处输入:mvn compile
会有下载插件的过程,我这里因为插件下载过了,所以直接显示了结果。
该目录下会多一个target文件夹。
输入:mvn clean 后就会把之前生成的target文件夹删除,返回编译前的状态。(一般不操作)
(2)再次在终端输入 mvn test
会有测试的过程,过程中也会下载插件,我这里因为插件下载过了,所以只显示了结果。
(3)输入:mvn package
会有打包过程,也会下载插件,我这里下载过了,所以只显示结果。
我们会发现target文件夹里会有一个jar文件。
(4) 输入:mvn install
会发现你电脑本地的仓库(前面设置过了),我的仓库是repo,会出现那个文件。这里的目录com\itheima\java-project\1.0 来源于你前面设置的pom.xml文件。
插件创建工程!
- 创建Java工程
mvn archetype:generate -DgroupId=com.itheima -DartifactId=java-project01 -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot -DinteractiveMode=false
里面相应的内容可以做相应的修改。(com.itheima会作为java目录的子目录,java-project01会作为项目名称)
将上面的代码复制到终端即可。
我们就会发现创建了一个完整的Java项目,里面的目录结构都是齐全的。
- 创建web工程
mvn archetype:generate -DgroupId=com.itheima -DartifactId=web-project -DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot -DinteractiveMode=false
同上面一样进行操作即可,在终端中输入上面的命令。
我们就会发现创建了一个完整的web项目,里面的目录结构式齐全的。