以下内容如有侵权请联系删除
第一章 Maven简介
1.1 Maven是什么?
Maven翻译为"专家"、"内行",是Apache 下的一个纯Java开发的开源项目。
一个对Maven 比较正式的定义是这么说的:
Maven是一个项目管理工具,它包含了一个项目对象模型,一组标准集合,一个项目生命周期,一个依赖管理系统,和用来运行定义在生命周期阶段中插件目标的工具。
1.2 Maven能解决什么问题
可以用更通俗的方式来说明。我们知道,项目开发不仅仅是写写代码而已,期间会伴随着各种必不可少的事情要做,下面列举几个感受一下:
1.我们需要引用各种jar包,尤其是比较大的工程,引用的jar包往往有几十个乃至上百个,每用到一种jar包,都需要手动引入工程目录,而且经常遇到各种让人抓狂的jar包冲突,版本冲突。
⒉我们写好的java文件,需要通过javac编译成class文件才能交给JVM运行。这项工作可以由各种集成开发工具帮我们完成Eclipse、IDEA等都可以将代码即时编译。
3.世界上没有不存在bug的代码,因此写完了代码,我们还要写一些单元测试,然后一个个的运行来检验代码质量。
4.再优雅的代码也是要出来卖的。我们后面还需要把代码与各种配置文件、资源整合到一起进行打包。如果是web项目,还需要将之发布到服务器。
试想,如果现在有一种工具,可以把你从上面的繁琐工作中解放出来,能帮你构建工程,管理jar包,编译代码,还能帮你自动运行单元测试,打包,生成报表,甚至能帮你部署项目,生成Web站点,你会心动吗?Maven就可以解决上面所提到的这些问题。
1.3 Maven的两个核心功能【重点】
依赖管理


项目构建

第二章 Maven安装和使用
2.1 Maven下载和安装

配置maven环境变量


2.2 Maven仓库【重点】
Maven仓库的分类

Maven本地仓库的配置

Maven仓库国内镜像配置
修改 maven根目录下的conf文件夹中的setting.xml文件,在mirrors 节点上,添加内容如下:
            
            
              xml
              
              
            
          
          <mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
</mirrors>
            
            
              xml
              
              
            
          
          <mirror>
    <id>Central</id>
    <url>http://insecure.repo1.maven.org/maven2/</url>
    <mirrorOf>central</mirrorOf>
</mirror>
2.3 Maven坐标和依赖

2.4 Maven工程的结构【重点】

第三章 Maven生命周期和插件
3.1 Maven常用命令
clean

compile

test

package

install

deploy
maven工程部署命令,将jar或war包部署(上传)到私服中。
3.2 生命周期





3.3 Maven插件
插件如何理解
Maven本质是一个插件执行流程,所有的工作是由插件来完成的。
这意味着 Maven 本身并不懂得如何编译你的代码、如何运行测试、如何打包成 JAR 文件。它只是提供了一个核心框架和一套生命周期。而插件就是具体去执行这些任务的"工具"。
一个生动的比喻
把 Maven 项目构建过程比作建造一栋房子(你的项目):
- Maven 核心框架:就像是项目经理和标准的建房流程手册。项目经理知道建房的阶段(打地基 -> 砌墙 -> 封顶 -> 装修),但他自己不动手。
- Maven 生命周期:就是手册里定义的固定阶段,例如 clean(清理工地)、compile(准备材料)、test(结构验收)、package(完成毛坯)、install(交付钥匙)。
- Maven 插件:就是具体的施工队和工具。
- maven-compiler-plugin 是编译施工队,负责把 Java 源代码(原材料)编译成字节码(加工好的建材)。
- maven-surefire-plugin 是测试验收队,负责运行单元测试来检查代码质量。
- maven-jar-plugin 是打包工具,负责把编译好的类文件、资源文件打包成一个 JAR 文件(毛坯房)。
 
总结:如何理解Maven插件?
1.核心执行者:Maven 的核心是框架,插件是干活的"工人"。
2.目标与阶段:插件提供具体的"任务",生命周期阶段是"任务清单"上的节点。Maven 通过将任务绑定到节点上来实现自动化构建。
3.高度可配置和扩展:你可以配置现有插件的参数,也可以引入第三方插件(如 Spring Boot 插件、Docker 插件等)来扩展 Maven 的功能,使其不仅能构建 Java 项目,还能管理容器、生成文档、部署应用等。


插件的调用方式
1.通过生命周期调用(最常见):
mvn compile, mvn package, mvn install
这些命令会触发整个生命周期流程,并执行对应阶段绑定的插件目标。
2.直接调用插件目标:
mvn compiler:compile, mvn surefire:test
这种方式直接指定运行某个插件的某个目标,而不管它在生命周期中的位置。常用于快速执行某个特定任务。
手动配置插件
当执行 mvn clean compile test package install 这些基本命令时,Maven 会使用默认插件及其默认配置。
当项目需求与Maven的默认配置不一致时,就需要配置插件了。配置插件本质上是一种"个性化定制"。
例如:
指定JDK版本插件(最常见)
不配置:可能默认用 JDK 1.5 编译,你的 Lambda 表达式会报错。
配置:在 pom.xml 中明确指定使用 JDK 8、11 或 17。
            
            
              xml
              
              
            
          
          <plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <source>11</source>
    <target>11</target>
  </configuration>
</plugin>再例如:
maven插件还提供了tomcat插件,这样就不需要安装和配置一个外部的、独立的 Tomcat 服务器,就能直接运行、调试和部署 Web 项目。
            
            
              xml
              
              
            
          
          <project>
  ...
  <packaging>war</packaging> <!-- 打包类型必须是 war -->
  ...
  <build>
    <finalName>mywebapp</finalName> <!-- 决定 WAR 包名称和上下文路径 -->
    <plugins>
      <!-- 配置 Tomcat Maven 插件 -->
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version> <!-- 注意版本 -->
        <configuration>
          <!-- 配置服务器端口 -->
          <port>8080</port>
          <!-- 配置应用的上下文路径,如果设为 `/` 则直接通过 http://localhost:8080 访问 -->
          <path>/</path>
          <!-- 以下是部署到外部 Tomcat 时才需要的配置 -->
          <!-- <url>http://remote-server:8080/manager/text</url> -->
          <!-- <server>TomcatServer</server> --> <!-- 对应 Maven settings.xml 中的服务器ID -->
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>3.3 Maven概念模型【了解】

第四章 IDEA创建Maven工程【重点】
4.1 IDEA配置本地Maven环境(全局...)



            
            
              xml
              
              
            
          
          -DarchetypeCatalog=internal -Dfile.encoding=GB23124.2 IDEA创建工程
java工程




指定maven环境的jdk版本和字符集模板
            
            
              xml
              
              
            
          
          <build>
    <plugins>
        <!-- 设置编译版本为1.8 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>



Web工程【重点】



4.3 发布web工程
基于idea集成Tomcat软件完成web工程部署

基于maven的Tomcat插件运行web项目
maven的Tomcat插件模板配置:
            
            
              xml
              
              
            
          
          <build>
      <plugins>
          <!-- 设置编译版本为1.8 -->
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.1</version>
              <configuration>
                  <source>1.8</source>
                  <target>1.8</target>
                  <encoding>UTF-8</encoding>
              </configuration>
          </plugin>
            <!--配置maven的Tomcat插件-->
          <plugin>
              <groupId>org.apache.tomcat.maven</groupId>
              <artifactId>tomcat7-maven-plugin</artifactId>
              <version>2.2</version>
              <configuration>
                  <port>8080</port>
                  <path>/</path>
                  <uriEncoding>utf-8</uriEncoding>
              </configuration>
          </plugin>
      </plugins>
  </build>
4.4 依赖管理


4.5 IDEA设置maven打包的jar包名称

第五章 Maven中pom、jar、war三种打包方式区别

第六章 Maven高级
6.1 依赖传递

6.2 依赖冲突和解决办法
依赖冲突:由于依赖的传递特性,导致依赖jar包的导入混乱,可能导致项目出现问题。
解决方法:约定俗称,排除依赖,锁定版本
约定俗称


排除依赖

锁定版本
锁死版本号,避免版本号冲突
1、定义公共版本号
2、锁定版本
3、导入依赖
            
            
              xml
              
              
            
          
          <!--
    锁定版本号
        1、定义公共版本号
        2、锁定需要依赖的版本号(锁定版本,不会真正的引入依赖)
        3、引入坐标依赖
 -->
<!-- 1、定义公共版本号-->
<properties>
    <!--自定义版本号常量-->
    <spring.version>5.1.6.RELEASE</spring.version>
</properties>
<!--2、锁定需要依赖的版本号-->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <!--引入常量:${常量名}-->
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>
<!--3.引入依赖(不能写版本号)-->
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
    </dependency>
</dependencies>6.3 聚合工程


第七章 maven私服(了解)
7.1 私服下载安装

7.2 私服的安装和启动

7.3 私服中仓库的种类

7.4 将本地的工程打包存入私服
(1)找到maven的setting.xml配置文件,设置私服访问密码
            
            
              xml
              
              
            
          
          <servers>
	<!--对应三个宿主仓库中 -->
	<server>
		<id>releases</id>
		<username>admin</username>
		<password>admin123</password>
	</server>
	<server>
		<id>snapshots</id>
		<username>admin</username>
		<password>admin123</password>
    	</server>
	<server>
		<id>thirdparty</id>
		<username>admin</username>
		<password>admin123</password>
	</server>
  </servers>(2)找到带上传工程pom.xml配置文件,设置需要上传到的服务路径
            
            
              xml
              
              
            
          
          <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>(3)执行maven命令上传--deploy
7.5 从私服下载jar包
(1)在maven安装目录的conf文件中的settings配置文件中配置profile
            
            
              xml
              
              
            
          
          <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>(2)在maven安装目录的conf文件中的settings配置文件中激活profile
            
            
              xml
              
              
            
          
          	<activeProfiles>
		<activeProfile>dev</activeProfile>
	</activeProfiles>第八章 将第三方jar存入本地仓库或者私服
8.1 安装第三方jar包到本地仓库
进入jar包所在目录运行
mvn install:install-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dfile=fastjson-1.1.37.jar -Dpackaging=jar打开cmd直接运行
mvn install:install-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dpackaging=jar -Dfile=C:\my_java\授课资料\资料:maven【高级】\安装第三方jar包\fastjson-1.1.37.jar8.2 安装第三方jar包到私服
(1)在settings配置文件中添加登录私服第三方登录信息
<server>
<id>thirdparty</id>
<username>admin</username>
<password>admin123</password>
</server>(2)进入jar包所在目录运行
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(2)打开cmd直接运行
mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dpackaging=jar -Dfile=C:\my_java\授课资料\资料:maven【高级】\安装第三方jar包\fastjson-1.1.37.jar -Durl=http://localhost:8081/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty
8.3 图形化安装第三方jar包到私服


如果上传的jar包有pom文件
