maven详解

maven

  • maven是apache组织下一个开源项目,是软件项目管理的综合工具;

1 特性

  • 自动下载软件项目依赖的包;
  • maven管理下的项目结构相同;
  • pom.xml文件下维护项目所使用的包;
  • 所有的代码都在src/main/java,所有的测试代码都是src/test/java;

2 环境变量的配置

2.1 windows配置

在这里插入图片描述
在这里插入图片描述

2.2 linux的环境变量

export MAVEN_HOME=/Users/xdclass/Documents/software/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin

3 maven仓库

3.1 maven仓库的分类

  • 本地仓库(.m2/repository);
  • 远程仓库
    • 中央仓库(从国外下载比较慢,一般使用镜像);
    • 私服;
  • 镜像: 仓库A可以获取仓库B所有的jar包,就把B称为仓库A的镜像;提供了一个切换地址的渠道;
  • 镜像的配置maven目录下etc/settings.xml
<mirrors>
	<mirror>  
    <id>nexus-aliyun</id>  
    <mirrorOf>central</mirrorOf>    
    <name>Nexus aliyun</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
    </mirror>
</mirrors>

3.2 仓库的调用顺序

  • 下载jar包时,调用仓库的顺序;
    • 未配置第三方库的情况
      • 先去本地库里面去查找,然后去中央仓库里面去查找,如果中央仓库没有找到则报错;
    • 配置了第三方库的情况;
      • 先去本地库里面找,然后去中央仓库里面找,然后到第三方库里面找(也可以先去三方库里面找,然后去中央仓库里面寻找,根据配置情况所定),如果第三方库里面没有找到则报错。

3.3 第三方库的配置

  • 按照顺序查找库
    <repositories>
        <repository>
            <id>cloudera</id>
            <name>cloudera</name>
            <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
        </repository>
        <repository>
            <id>cloudera1</id>
            <name>cloudera2</name>
            <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
        </repository>
    </repositories>
  • repositories和mirrorOf关系:镜像的实际作用就是拦截repositories的请求,修改包的地址。
    • 例如:repositories 的地址是https://repository.cloudera.com/artifactory/cloudera-repos/经过拦截过后就会变成mirrors配置的镜像地址http://maven.aliyun.com/nexus/content/groups/public。

3.4 mirrorOf和repository的关系

  • mirrorOf设置为 central 所有的请求都会被mirror拦截;
  • mirrorOf设置为 * 匹配所有的repositories下的id 配置的所有的第三方库都会被拦截;
  • mirrorOf设置为 central:* localhost和file:///不会被匹配,换句话话说就是本地的匹配本地的仓库;
  • mirrorOf设置为 req1、req2 repositories下req1、req2第三方库都会被拦截;
  • mirrorOf设置为 * ! req2 意思师req2不会被被拦截 ;

4 maven的生命周期

  • clean 清理项目
  • build 构建项目
    • 验证vaildate->编译complie->测试test->打包package->检查verify->安装install->部署deploy
  • site 项目文件处理

5 使用IDEA构建maven项目

在这里插入图片描述

6 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>com.demo</groupId>
    <!-- 项⽬目的唯⼀一ID,⼀一个groupId下⾯面可能多个项⽬目,就是靠artifactId来区分的 -->
    <artifactId>test</artifactId>
    <!-- 项⽬目版本号 -->
    <version>1.0-SNAPSHOT</version>
    
    <!-- 项⽬目打包形式,常⻅见的是 war、jar-->
<packaging>jar</packaging>
<!--项⽬目名称-->
<name>xd_video</name>

<!--项⽬目描述-->
<description>Demo project for Spring Boot</description>
    <!--依赖-->
    <dependencies>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.73</version>
    </dependency>
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15on</artifactId>
            <version>1.61</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.15</version>
        </dependency>
    </dependencies>

<!--第三方库-->
    <repositories>
        <repository>
            <id>cloudera</id>
            <name>cloudera</name>
            <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
        </repository>
        <repository>
            <id>cloudera1</id>
            <name>cloudera2</name>
            <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
        </repository>
    </repositories>


</project>

7 maven的项目结构和指令

7.1 项目结构

  • src
    • main
      • java
      • resources
      • web-app
        • index.jsp
      • css js html 静态资源的项目
    • test
      • java
      • resources
  • target 存放的编译好的war包 jar包 静态文件

7.2 常用命令

  • mvn clean 清理编译文件;
  • mvn install 项目部署到本地仓库;
  • mvn package 项目打包的本地项目;
  • mvn dependency:tree 查看文件的本地树;
  • intall的区别
    • maven package只是把包打在⾃自⼰己的项目下;
    • maven install会把包打在maven本地仓库下,可以给依赖它的其他项目调用 ;
  • maven常⽤用参数
    • -D 指定参数,-Dmaven.test.skip=true 跳过单元测试;
      • mvn install -Dmaven.test.skip=true;
    • -p 指定profile配置,⽤用于区分环境;
  • web项⽬目命令
    • mvn tomcat:run 启动tomcat
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值