• Maven


    java项目构建工具

    特点

    1. 方便快速完成分布式开发

    2. 方便完成项目的依赖管理

    安装与配置

    解压后配置环境变量

    仓库

    存放maven项目的目录(文件夹)

    本地仓库

    默认位置:C:\Users\Administrator.m2\repository

    本机上用于存放maven项目的目录,服务于本机所有maven项目

    远程仓库

    1. 中央仓库

      maven官方提供,服务器架设在国外,服务于全世界所有maven项目

    2. 中央仓库镜像

      服务器架设在某一个区域内,服务区域内所有maven项目

    3. 私服

      架设在局域网内的maven服务器,服务于当前局域网内所有的maven项目;

    指定本地仓库

    1. <localRepository>目录地址localRepository>

    配置中央仓库镜像

    1. <mirrors>
    2.    <mirror>
    3.        <id>aliyun-publicid>
    4.        <mirrorOf>*mirrorOf>
    5.        <name>aliyun publicname>
    6.        <url>https://maven.aliyun.com/repository/publicurl>
    7.    mirror>
    8.    <mirror>
    9.        <id>aliyun-centralid>
    10.        <mirrorOf>*mirrorOf>
    11.        <name>aliyun centralname>
    12.        <url>https://maven.aliyun.com/repository/centralurl>
    13.    mirror>
    14.    <mirror>
    15.        <id>aliyun-springid>
    16.        <mirrorOf>*mirrorOf>
    17.        <name>aliyun springname>
    18.        <url>https://maven.aliyun.com/repository/springurl>
    19.    mirror>
    20.    <mirror>
    21.        <id>aliyun-spring-pluginid>
    22.        <mirrorOf>*mirrorOf>
    23.        <name>aliyun spring-pluginname>
    24.        <url>https://maven.aliyun.com/repository/spring-pluginurl>
    25.    mirror>
    26.    <mirror>
    27.        <id>aliyun-apache-snapshotsid>
    28.        <mirrorOf>*mirrorOf>
    29.        <name>aliyun apache-snapshotsname>
    30.        <url>https://maven.aliyun.com/repository/apache-snapshotsurl>
    31.    mirror>
    32.    <mirror>
    33.        <id>aliyun-googleid>
    34.        <mirrorOf>*mirrorOf>
    35.        <name>aliyun googlename>
    36.        <url>https://maven.aliyun.com/repository/googleurl>
    37.    mirror>
    38.    <mirror>
    39.        <id>aliyun-gradle-pluginid>
    40.        <mirrorOf>*mirrorOf>
    41.        <name>aliyun gradle-pluginname>
    42.        <url>https://maven.aliyun.com/repository/gradle-pluginurl>
    43.    mirror>
    44.    <mirror>
    45.        <id>aliyun-jcenterid>
    46.        <mirrorOf>*mirrorOf>
    47.        <name>aliyun jcentername>
    48.        <url>https://maven.aliyun.com/repository/jcenterurl>
    49.    mirror>
    50.    <mirror>
    51.        <id>aliyun-releasesid>
    52.        <mirrorOf>*mirrorOf>
    53.        <name>aliyun releasesname>
    54.        <url>https://maven.aliyun.com/repository/releasesurl>
    55.    mirror>
    56.    <mirror>
    57.        <id>aliyun-snapshotsid>
    58.        <mirrorOf>*mirrorOf>
    59.        <name>aliyun snapshotsname>
    60.        <url>https://maven.aliyun.com/repository/snapshotsurl>
    61.    mirror>
    62.    <mirror>
    63.        <id>aliyun-grails-coreid>
    64.        <mirrorOf>*mirrorOf>
    65.        <name>aliyun grails-corename>
    66.        <url>https://maven.aliyun.com/repository/grails-coreurl>
    67.    mirror>
    68.    <mirror>
    69.        <id>aliyun-mapr-publicid>
    70.        <mirrorOf>*mirrorOf>
    71.        <name>aliyun mapr-publicname>
    72.        <url>https://maven.aliyun.com/repository/mapr-publicurl>
    73.    mirror>
    74. mirrors>

    坐标

    定位项目在maven仓库位置

    groupId:配置项目所属公司或组织的域名(倒写)

    artifactId:配置项目名称

    version:配置项目版本

    生命周期

    maven有三套相互独立的生命周期,每套都包含了生命周期指令

    clean lifecycle

    执行清理工作

    mvn pre-clean:执行清理工作之前执行的指令

    mvn clean:清理前一次编译结果💥

    mvn post-clean:执行清理工作之后执行的指令

    不管执行生命周期的哪个阶段,都从当前生命周期最初位置开始执行

    default lifecycle

    核心maven会完成编译、测试、打包、安装、部署等工作;

    mvn compile:编译💥

    mvn test:测试

    mvn package:打包💥

    mvn install:安装💥

    mvn depoly:部署

    site lifecycle

    生成站点信息(了解)

    mvn site:生成当前项目站点信息

    pom.xml

    依赖

    标签引入外部依赖

    子标签配置引入maven项目的坐标信息

    1. <dependencies>
    2.    <dependency>
    3.        <groupId>org.mybatisgroupId>
    4.        <artifactId>mybatisartifactId>
    5.        <version>3.5.6version>
    6.    dependency>
    7.    <dependency>
    8.        <groupId>mysqlgroupId>
    9.        <artifactId>mysql-connector-javaartifactId>
    10.        <version>5.1.45version>
    11.    dependency>
    12. dependencies>

    依赖传递

    某个项目依赖了外部依赖又被其他项目所依赖,该项目依赖的外部依赖可传递到其他项目

    子标签:用于设置当前引入的外部依赖的作用范围,常用的取值有:

    1. compile:表示依赖具备传递性(默认值)

    2. test:表示依赖仅参与测试阶段,此时依赖不具备传递性(引入单元测试junit,取值就是test)

    3. provided:表示依赖仅参与编译阶段,不参与打包部署,不具备传递性(引入servlet-api依赖,scope必须取成provided)

    4. runtime:表示依赖会参与到运行阶段中(引入数据库驱动(mysql-connector-java),取值就是runtime)

    依赖原则

    1. 项目中有多个相同依赖传递到本项目中,路径最短者优先;

    2. 路径相同时,先配置者优先;

    依赖排除

    1. <exclusions>
    2.    <exclusion>
    3.        <groupId>org.mybatisgroupId>
    4.        <artifactId>mybatisartifactId>
    5.    exclusion>
    6. exclusions>

    依赖继承

    maven的继承是maven项目之间的继承,一定需要有一个父项目,子项目才可以去完成继承动作

    maven的父项目是通过pom.xml中的标签设置

    标签用于设置maven项目的打包形式:

    jar:表示将当前项目打成jar包

    war:表示将当前项目打成war包

    pom:表示当前项目是一个父项目,如果设置为pom之后,当前项目进行编译或打包、安装、部署等操作时,不会对src目录进行任何操作(可以删除src目录)

    实现步骤

    1. 创建父项目

      <packaging>pompackaging>

    2. 创建子项目,继承父项目

      1. <parent>
      2.    <groupId>com.woniuxygroupId>
      3.    <artifactId>parentartifactId>
      4.    <version>1.0-SNAPSHOTversion>
      5. parent>

      maven继承中,父项目与子项目的关联性很弱,对父项目进行任何操作,子项目不会跟着发生变化

    maven聚合

    maven聚合是建立在继承基础上。实现聚合,要在父项目中通过标签将子项目包含进来,此时父项目中执行操作,子项目会跟着执行相应操作

    实现步骤:

    1. 在父项目中通过标签将子项目包含

      1. <modules>
      2. <module>MyShop_Commonsmodule>
      3. <module>MyShop_Daomodule>
      4. <module>MyShop_Servicemodule>
      5. <module>MyShop_Webmodule>
      6. modules>

    2. 在子项目的标签中使用标签指向父项目的pom.xml

      1. <parent>
      2.    <groupId>com.woniuxygroupId>
      3.    <artifactId>parent1artifactId>
      4.    <version>1.0-SNAPSHOTversion>
      5.    
      6.    <relativePath>../parent1/pom.xmlrelativePath>
      7. parent>

    父项目集中管理依赖版本

    在父项目的pom.xml中可以通过声明依赖

    注意:

    此时依赖不会实际引入,在子项目中按需去加载所需依赖,一定不要加子标签

    由于父项目中管理的依赖过多,导致查询相关依赖版本时比较难找,可直接在标签中自定义版本标签

    父项目

    1. <properties>
    2.    <mybatis.version>3.5.6mybatis.version>
    3. properties>
    4. <dependencyManagement>
    5.    
    6.    <dependencies>
    7.        <dependency>
    8.            <groupId>org.mybatisgroupId>
    9.            <artifactId>mybatisartifactId>
    10.            <version>${mybatis.version}version>
    11.        dependency>
    12.    dependencies>
    13. dependencyManagement>

    子项目

    1. <dependencies>
    2. <dependency>
    3. <groupId>org.mybatisgroupId>
    4. <artifactId>mybatisartifactId>
    5. dependency>
    6. dependencies>

  • 相关阅读:
    “编辑微信小程序与后台数据交互与微信小程序wxs的使用“
    主流电商平台价格如何高频监测
    【云备份|| 日志 day5】文件热点管理模块
    AJAX(一):初识AJAX、http协议、配置环境、发送AJAX请求、请求时的问题
    最大公约数循环与递归版本
    Virtual ******* Network (V*N) Lab
    探索云世界的无限可能
    IDEA整合tomcat教程
    PCL RANSAC拟合球面和平面
    Windows本地配置带GPU的Pytorch环境
  • 原文地址:https://blog.csdn.net/Xstruggle/article/details/125892472