zoukankan      html  css  js  c++  java
  • maven

    1.为什么需要maven

    • 解决jar包之间的冲突
    • jar包之间的依赖关系
    • 获取第三方jar包更方便
    • 将项目拆分为多个工程模板
    • 实现项目的分布式部署

    2.自动化构建工具

     清理编译测试报告打包安装部署

    3.maven的核心概念

    • POM(项目对象模型)

    • 约定的目录结构

    • 坐标(groupId、artifactId、version)

    • 依赖管理(dependency标签)

    • 仓库管理

    • 生命周期

    4.修改本地仓库地址

     打开apache-maven-3.6.3/conf下的setting.xml,修改localRepositosy标签设置本地仓库地址

    5.约定的目录结构

      

    6.坐标

     groupId:公司或组织域名的倒序+当前项目名称

     artifactId:当前项目的模块名称

     version:版本

    7.如何通过坐标到仓库中寻找jar包

    • 将gav向量拼接起来,groupId/artifactId/version/artifactId-version.jar

    • 以连起来的字符串作为目录结构到仓库中去查找

    8.仓库

    • 本地仓库
    • 远程仓库(局域网内的私服、中央仓库、中央仓库的镜像)

    9.仓库中的文件

    • maven中的插件

    • 自己开发的项目模块

    • 第三方的jar包

    10.生命周期

    • clean生命周期  pre-clean→clean→post-clean
    • site生命周期  pre-site→site→post-site→site-deploy
    • default生命周期  complie→test-compile→test→package→install

    11.手动创建的maven工程导入到eclipse中

      右键→Import→Maven→Existing Maven project

    12.jar包依赖的范围

    • compile

        main和test目录下的代码都可以访问,会部署到服务器运行时要放在WEB-INF的lib目录下

    • test

        仅test目录下的代码可以访问,不会部署到服务器运行时要放在WEB-INF的lib目录下

        例如:对junit的依赖,仅仅是测试程序需要

    • provided

        main和test目录下的代码都可以访问,不会部署到服务器运行时要放在WEB-INF的lib目录下

        例如:servlet-api在服务器上运行时,servlet容器会提供相应的api,所以部署的时候不需要

    13.依赖的传递性

      Q:当存在间接依赖时,主工程对间接依赖的jar包可以访问吗?

      A:只有间接依赖的jar包范围为compile,才可以访问

    14.依赖原则

    • 路径最短者优先

        A依赖于B,B依赖于C,B与C依赖的jar包版本不同,这时A所依赖的jar包版本取决于B。

    • 路径相同时先声明者有限

        A依赖于B,A又依赖于C,B与C依赖的jar包版本不同,这时A所依赖的jar包版本取决于在依赖时B与C中先声明者。

    15.exclusions可以排除间接依赖

    16.继承

      如果需要统一多个模块的jar包版本,则需创建父工程,在父工程中配置jar包的版本,在子工程中引用父工程。创建父工程时打包方式为pom,子工程的打包方式为jar。若子工程的gav与父工程一样,则可以删除。

      父工程中的pom.xml文件

    <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>
        <groupId>com.atguigu.maven</groupId>
        <artifactId>parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>pom</packaging>
    
        <!-- 通过继承管理依赖 -->
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>4.0</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    </project>

      子工程中的pom.xml文件

    <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>
        <!-- 设置父工程 -->
        <parent>
            <groupId>com.atguigu.maven</groupId>
            <artifactId>parent</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <!-- 从当前工程出发查询父工程中pom.xml文件的 相对路径 -->
            <relativePath>../parent/pom.xml</relativePath>
        </parent>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </dependency>
        </dependencies>
        <artifactId>son</artifactId>
    </project>

    17.聚合

      将多个工程拆分成模块后,需要手动逐个安装到仓库才能够生效,修改源代码后也需要逐个手动进行clean,而使用聚合可以批量进行maven工程的安装

    <modules>
        <module>../Hello</module>
        <module>../HelloFriend</module>
        <module>../OurFriend</module>
    </modules>
  • 相关阅读:
    WordPress在nginx服务器伪静态
    excel根据一列的值匹配另一列
    linux上安装Anaconda并创建python虚拟环境
    python模块学习之numpy
    大数据测试工具
    python学习路线
    spark event log
    夏令时
    spark学习指南
    Yarn和Spark对比
  • 原文地址:https://www.cnblogs.com/yanchaoyi/p/13849427.html
Copyright © 2011-2022 走看看