Maven原理及使用

 一.底层原理

1)基本概念

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。(使用Java语言开发)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iUCkZOYO-1622610960633)(RackMultipart20210602-4-1ptwrts_html_dbbe040f008533d0.png)]

角色划分:
本地仓库: 在本机中保存jar包的文件目录
远程仓库:maven官网几乎维护了所有的开源jar包信息.其中解决了版本冲突的问题.
私服镜像:为了让本地用户快速的获取jar包.使用镜像服务器提前下载jar包.速度更快.
maven的工作原理:
1.镜像服务器搭建时,需要定期拉去远程服务器中的jar包.
2.获取到的包.保存到镜像服务器本地.方便用户以后获取.
3.用户使用jar包时,先检查本地仓库中是否有包,如果没有 则连接私服镜像获取jar包. 如果有,则直接使用.
4.将jar包保存到本地之后,供用户使用.

2)maven坐标

maven的坐标:

组id  一般采用公司域名倒写的方式

项目名  项目名称必须唯一

版本号  指定项目的版本的

作用: 查找本地仓库中的对应jar包 

maven的坐标意义:

1.maven中央仓库采用坐标的形式管理所有的jar包.
2.可以根据坐标的位置,唯一定位jar包.
3.可以根据坐标.依赖其它项目

maven jar包搜索地址:https://mvnrepository.com/ 

3)jar包依赖传递性原理

maven工具通过dependency标签和坐标查找指定的jar包文件.
根据坐标查找包
maven加载完成jar包之后,扫描当前文件的 xxxx.pom文件.

之后根据该坐标继续添加jar包依赖项. 直到将所有的依赖信息加载完成为止

 4) 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!--定义maven的坐标
        组id  一般采用公司域名倒写的方式  www.tedu.cn
        项目名 项目名称必须唯一
        版本号 指定项目的版本的.
        问题: maven的坐标有什么意义?
        答:
          1.maven中央仓库采用坐标的形式管理所有的jar包.
          2.可以根据坐标的位置,唯一定位jar包.
          3.可以根据坐标.依赖其它项目!!!.
    -->
    <groupId>com.taobao</groupId>
    <artifactId>spring_demo1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring_demo1</name>
    <description>spring_demo1</description>


     <!--表示当前maven的配置信息-->
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <!--以后springboot的平台的版本就是2.3.7-->
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
    </properties>
    <!--依赖的jar包-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!--mybatis依赖包-->
        <!--<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>-->

        <!--spring整合mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3</version>
        </dependency>

        <!--jdbc依赖包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!--添加lombok的包-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

<!--依赖的管理器,在内部指定的jar包的版本,所以不需要手动指定
        一般多见于 springboot/springCloud的项目.
    -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

<!--build的标签 项目编译/打包时有用-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.7.RELEASE</version>
                <configuration>
                    <!--注意事项:必须与当前项目的主启动类一致 -->
                    <mainClass>com.taobao.JtApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

还可以将settings.xml文件复制到该目录下:

5) 常见命令

clean: 清空项目中的target目录(class文件)

compile 使用maven工具进行编译 将xxx.java生成xxx.class

test 测试

site 站点文档

package 打包jar、war

deploy 部署到私服

install 将java项目打包为xxx.jar,存在本地仓库

run 运行

 二.Maven的使用

1)下载地址

https://maven.apache.org/download.cgi

2)配置镜像/本地仓库

解压即可使用,打开解压文件夹中的conf中的settings.xml,在设置中配置镜像(配置一个即可)/本地仓库,如下:

<!--配置本地仓库-->
<localRepository>/path/to/local/repo</localRepository>


<!--配置远程仓库(配置其一即可)-->
<!--阿里云的私服镜像服务器-->
<mirrors>
		<mirror>
	        <id>nexus-aliyun</id>
	        <mirrorOf>*</mirrorOf>
	        <name>Nexus aliyun</name>
	        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
	 	</mirror>

<!--阿里云的私服镜像服务器-->
		<mirror>
	        <id>nexus-aliyun</id>
	        <mirrorOf>*</mirrorOf>
	        <name>Nexus aliyun</name>
	        <url>https://maven.aliyun.com/repository/public</url>
	 	</mirror>

<!--华为的私服镜像服务器-->
        <mirror>
		    <id>huaweicloud</id>
		    <mirrorOf>*</mirrorOf>
		    <url>https://mirrors.huaweicloud.com/repository/maven/</url>
		</mirror>
<mirrors>

3)idea整合Maven

最好准备一个jar包文件放入本地库中,如果网络不好,很容易jar包下载失败,一路飘红!!!!

 idea整合Maven只需一次,每次创建Maven项目时不需要再整合Maven,步骤如下:

4)创建SpringBoot工程

创建每个Maven工程都需要idea中配置Maven
一般不会单独创建Maven工程,而是创建SpringBoot工程
URL地址: https://start.aliyun.com在这里插入图片描述

在这里插入图片描述

三.Maven常见报错

1)版本兼容性问题

IDEA的版本,不要太低.至少2020以上, 兼容 maven 3.8.x

2)网络问题下载jar包失败

现象如下:
在这里插入图片描述
方案①先将maven本地仓库清空,再重新加载reload

方案②如果jar包下载完整,还是飘红可以选择重启idea看看

 

3)jar包下载不完整,处理方案

常见异常的说明: 有时maven jar包下载不正常.但是maven的工具以为是正确的.导致jar包的导入报错!!! 如果遇到这样的报错信息.,则将jar包删除即可.
然后刷新maven在这里插入图片描述

 在这里插入图片描述

 可以根据坐标查找到对应的jar包,将下载不完整的jar包删除,再次重新下载即可

4)有时IDEA 不能正确的识别maven项目

需要自己手动的添加该项目

在这里插入图片描述

最终效果:
在这里插入图片描述

5) Maven解压路径问题

①Maven解压路径不能和其他路径耦合
②Maven路径不能出现特殊符号,不然会出现各种各样的异常(Maven是Java语言开发的)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值