maven使用基本知识

1.什么是maven?

maven是一个工具,可以让程序员们并行开发,从而不影响项目进度,也可以说就是用来管理项目的,它可以简化重复导包,重复代码一系列问题。

2.远程库和本地库

远程库: 所谓的远程库,就是maven的核心库,这个库是国外的,里面有很多jar包,国内可以连接,但是只有读取的权限,并且速度很慢,所以在国内,就有一种东西叫代理库,简单来说就是阿里这样的大公司,把这个maven库给映射到国内,你使用这个映射库就可以,但是同样也只有可读的权限。
配置远程库: 可以在maven3.6->conf->setting.xml中找到如下代码(159行),下面红框里的地址,就是一个国内映射地址
maven使用基本知识_第1张图片

本地库: 就是自己在本地配置一个库,简单来说自己就是自己的远程库。
配置本地库: 有一个叫ali_repo的压缩文件,要想在本地配置本地库,就需要在setting.xml文件中指明这个文件的位置,它里面就是各种jar包。
在这里插入图片描述

3.pom文件

pom文件存在于每个maven项目中,它是一个xml类型的配置文件,里面会写项目的jar包相关信息,继承相关信息,依赖相关信息,后面通过代码来解释。
下面就是一个pom文件:
org.lxh:maven项目发布到库的时候,存储的位置。
maven使用基本知识_第2张图片
mavenTEST01:项目的名称
1.0-SNAPSHOT:项目的版本

<?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>

    <groupId>org.lxh</groupId>
    <artifactId>mavenTEST01</artifactId>
    <version>1.0-SNAPSHOT</version>
</project>

4.maven的依赖,继承,聚合

依赖(dependencies): 简单来说,使用依赖就是引入jar包,之前我们使用复制粘贴的方式,来引入jar包,现在我们使用maven来管理jar包,jar包的声明就在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>
<groupId>org.lxh</groupId>
<artifactId>mavenTEST01</artifactId>
<version>1.0-SNAPSHOT</version>
    <!--导入依赖 -->
     <dependencies>
         <!--依赖1,自定义发布到本地库的依赖 -->
         <dependency>
             <groupId>org.lxh</groupId>
             <artifactId>mavenTEST01</artifactId>
             <version>1.0-SNAPSHOT</version>
         </dependency>
         <!--依赖2,自springframework本地库的依赖 -->
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-beans</artifactId>
             <version>4.3.11.RELEASE</version>
         </dependency>
     </dependencies>
</project>

依赖的传递性: a jar包中有三个依赖,b jar包使用了a jar包,那么b也具有a中的三个依赖,如果c又引入了b jar包,那么c中也有这三个依赖。

消除依赖的传递性:

    <!--导入依赖 -->
     <dependencies>

         <!--依赖1,自定义发布到本地库的依赖 -->
         <dependency>
             <groupId>org.lxh</groupId>
             <artifactId>mavenTEST01</artifactId>
             <version>1.0-SNAPSHOT</version>
         </dependency>
         <!--依赖2,自springframework本地库的依赖 -->
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-beans</artifactId>
             <version>4.3.11.RELEASE</version>
             <!--去除springframework中的spring-core -->
             <exclusions>
                 <exclusion>
                     <groupId>org.springframework</groupId>
                     <artifactId>spring-core</artifactId>
                 </exclusion>

             </exclusions>
         </dependency>

     </dependencies>

继承: 多个程序员进行开发的时候,会出现各个程序员使用的资源版本不一致的问题,这对项目后期的整合是很大的隐患,所以继承就是来解决这个问题的。
maven使用基本知识_第3张图片
实现继承:
当你在父项目中创建一个module,并且把他的父项目选择好的时候,创建成功后,可以在pom文件中看见如下设置:
maven使用基本知识_第4张图片
同时可以在子项目的pom文件中看到如下设置:
maven使用基本知识_第5张图片
可继承内容:
properties—— 在父项目中可以使用该标签在pom文件中定义一些变量,然后再子项目的pom文件中就可以使用该变量,比如我再父项目中使用properties定义了一个spring的version,于是在子项目中,就可以使用特殊的方式来获取这个变量的值,就不用自己来写,确保了版本的一致性。
父项目:

    <properties>
        <spring-version>4.3.11.RELEASE</spring-version>
    </properties>

子项目:

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring-version}</version>
        </dependency>
    </dependencies>

dependencies—— 父项目的所有依赖都可以被子项目继承,但是这是不合理的,因为子项目中需要的不是全部依赖。
depencyManagement—— 他的作用就是和dependencies一样,需要注意的是,有了它就可以选择继承,子项目只会继承那些在depencyManagement中声明的版本号,然后再子项目中就可以只写groupId artifactId,而version直接继承自父项目
父项目:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>4.3.11.RELEASE</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

子项目:

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>
    </dependencies>

聚合:
其实就是通过继承,来实现所有maven项目一键化操作,在父项目中,右键构建一个module选择父项目,则所有关系就会给你自动生成好了。

5.maven的常用命令

下图可以看到这些就是常用命令
maven使用基本知识_第6张图片
compile:编译maven项目

clean:清空target文件(target文件里保存的是maven项目的所有输出)

test:进行测试的运行,它生成测试报告,方便观察纠错

package:将maven项目打成jar包或者war包,到该运行的服务器运行,提供给其他人使用。例如:打成jar包,交给其他人导入使用,打成war包,放到tomcat中运行。

install:作为库的资源,放到远程库使用,必须满足库资源的结构,当某个项目jar包打包完成,想要放到远程库给别人连接读取使用,必须先经过本地库的安装过程,将项目的jar包作为库的结构生成在本地,才能进行上传发布到远程私服

deploy:当一个maven项目进行安装之后,本地库具备了该项目的所有库资源结果(maven一切皆资源)。可以通过发布命令,将项目的资源上传到远程私服。

你可能感兴趣的:(maven,intellij,idea)