Maven 基础

目录

    • 1.1 简介
    • 1.2 仓库
    • 1.3 坐标
    • 1.4 基本项目构建命令
    • 1.5 pom 文件
    • 1.6 生命周期

1.1 简介

概念:Maven 的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POW);

  1. Maven是用 Java 语言编写的。他管理的东西统统以面向对象的形式进行设计,最终他把一个项目看成一个对象,而这个对象叫做POM(project object model),即项目对象模型
  2. Maven 的作用有三个:
  1. 项目构建:提供标准的,跨平台的自动化构建项目的方式;
  2. 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突等问题;
  3. 统一开发结构:提供标准的,统一的项目开发结构;

1.2 仓库

概念Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库,用于存储各种资源,包含各种 jar 包;

Maven 仓库有三种类型:

  • 本地仓库:本地仓库是自己电脑上存储资源的仓库,在第一次执行 maven 命令的时候被创建,Maven 所需要的构建是直接从本地仓库进行获取的,如果本地仓库没有,它会连接远程仓库获取资源下载至本地仓库;
  • 中央仓库:中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库,中央仓库包含了绝大多数的开源 Java 构件(不能存储具有版权的资源),由 Maven 团队维护,需要网络才能访问;
  • 私服: 部门或公司范围内存储资源的仓库,用于保存购买的、自主研发的 jar ,仅对内部开放,不对外部开放;

1.3 坐标

概念:Maven 坐标用于描述仓库中资源的位置;

组成

  1. 组织 ID ( groupId ):定义当前 Maven 项目隶属组织名称(通常是域名反写,例如:org.mybatis );
  2. 项目 ID ( artifactId ):定义当前 Maven 项目名称;
  3. 版本号(version):定义当前项目版本号;

作用:坐标是唯一标识,用于唯一位置定位;

资源坐标查询网站:https://mvnrepository.com/

1.4 基本项目构建命令

  • Maven 构建命令使用 mvn 开头,后面添加功能参数,可以用空格分隔一次性执行多个命令:
//编译
mvn compile
//清理
mvn clean
//测试
mvn test
//打包
mvn package
//安装到本地仓库
mvn install

1.5 pom 文件

常用标签:

  • dependencies:设置当前项目所依赖的所有 jar;
  • dependency:设置具体的依赖;
  • optional:可选依赖;
  • exclusions:排除依赖;
  • scope:依赖范围;
  • groupId:所属的项目包;
  • artifactId:所属项目 id ;
  • packaging:打包格式( java 项目为 jar ,web 项目为 war );
  • version:版本号;
  • build:配置;
  • plugins:设置当前项目所依赖的所有插件;
  • plugin:设置具体的插件;
  • configuration:设置当前插件的配置、构造;
  • port:端口号;
  • path:路径;

示例:

<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.0modelVersion>
 
 <groupId>com.caterpillargroupId>
 
 <artifactId>web01artifactId>
 
 <packaging>warpackaging>
 
 <version>1.0-SNAPSHOTversion>
 <name>web01 Maven Webappname>
 <url>http://maven.apache.orgurl>
 
 <dependencies>
 
   <dependency>
     
     <groupId>junitgroupId>
     
     <artifactId>junitartifactId>
     
     <version>4.12version>
     
     <optional>trueoptional>
     
     <scope>testscope>
   dependency>
   <dependency>
     <groupId>com.caterpillargroupId>
     <artifactId>java01artifactId>
     <version>1.0-SNAPSHOTversion>
     
     <exclusions>
       
       <exclusion>
         <groupId>junitgroupId>
         <artifactId>junitartifactId>
       exclusion>
     exclusions>
   dependency>
 dependencies>
 
 <build>
   
   <plugins>
     
     <plugin>
         
         <groupId>org.apache.tomcat.mavengroupId>
         
         <artifactId>tomcat7-maven-pluginartifactId>
         
         <version>2.1version>
       
       <configuration>
         
         <port>80port>
         
         <path>/path>
       configuration>
     plugin>
   plugins>
 build>
project>

依赖:

  1. 传递性
  • 在当前项目中通过 pom 文件建立的依赖关系叫做直接依赖;
  • 在当前项目的依赖中依赖其他项目,会继承被依赖项目的依赖;
  1. 依赖传递冲突问题

在依赖传递的情况下,出现依赖同一个名称但实际不为同一资源时称为依赖传递冲突问题;

依赖的优先级

  • 路径优先:层级越深,优先级越低,层级越浅优先级越高;
  • 声明优先:配置顺序靠前的覆盖配置顺序靠后的;
  • 特殊优先:为相同资源的不同版本情况下后配置的覆盖先配置的;
  1. 依赖范围

依赖的 jar 默认情况下可以在任何情况下使用,可以使用 scope 标签设定其作用范围;

作用范围
> > > > > > > > > >
scope 主代码 测试代码 打包
compile(默认) 可用 可用 可用
test 不可用 可用 不可用
provided 可用 可用 不可用
runtime 不可用 不可用 可用

1.6 生命周期

maven 对项目构建的生命周期分为 3 套:

  1. clean:清理工作
  • pre-clean:执行一些需要在 clean 之前完成的工作;
  • clean:移除上一次构建所生成的文件;
  • post-clean:执行一些需要在 clean 之后执行的工作;
  1. defaule:核心工作

主要有:

  • compile:编译
  • test-compile:编译测试源码
  • test:测试
  • package:打包
  • install:安装
  1. site:产生报告
  • pre-site:执行一些要在生成站点文档之前完成的工作;
  • site:生成项目的站点文档;
  • post-site:执行一些在站点文档之后完成的工作,并且为部署做准备;
  • site-deploy:将生成的站点文档部署到特定的服务器上;

你可能感兴趣的:(JAVA,maven,java)