Maven学习笔记(黑马程序员)

一、Maven简介

       maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型POM(Project Object Modle)

Maven学习笔记(黑马程序员)

    maven的作用:
    1、项目构建:提供标准的,跨平台的自动化项目管理构建方式
    2、依赖管理:方便快捷的管理项目依赖的资源jar包,可以统一控制版本
    3、统一开发结构:提供标准的,统一的项目结构

Maven学习笔记(黑马程序员)

maven基础概念:
    仓库:用于存储资源,包含各种jar包。仓库分为本地仓库、远程仓库(又分为Maven团队维护            的*仓库、部门/公司范围内存储资源的私服)。资源在mvnrepository.com查找
    坐标:Maven中坐标用于描述仓库中资源的位置
        groupId:定义当前maven项目的隶属组织名称(通常是域名反写)
        artifactId:定义当前maven项目的名称 (通常是指模块名称)
        version:定义当前资源的版本号
        packaging:定义当前项目的打包方式(默认方式为打jar包)
    坐标作用:使用唯一的标识,通过改标识可以下载对应的资源

Maven项目构建命令:

      mvn compile:  编译

      mvn clean:      清理

      mvn test:         测试

      mvn package: 打包

      mvn install:      安装到本地仓库

第一个Maven项目(手动制作)

Maven学习笔记(黑马程序员)

 idea创建第一个Maven工程:

     先创建空java工程,然后setting配置Maven属性,然后project structure中new module选择模板   

 pom.xml中添加插件:

Maven学习笔记(黑马程序员)

依赖配置格式:

Maven学习笔记(黑马程序员)

 

依赖传递:    
    依赖传递的冲突问题:
        路径优先:当依赖中出现相同资源时,层级越深,优先级越高。
        声明优先:当资源在同层级被依赖时,后配置的覆盖前面配置的

隐藏依赖实现方法:

         <optional>true</optional>

排除依赖(主动断开依赖的资源,被排除的资源无需指定版本--不需要):

Maven学习笔记(黑马程序员)

 依赖范围:依赖的jar包默认情况可以在任何地方使用,可以通过scope标签设定其作用范围

        作用范围:1)主程序范围有效(main)

                          2)测试程序范围有效(test)

                          3)是否参与打包(package指令范围内)

  soupe参数:     Maven学习笔记(黑马程序员)

 依赖范围传递性:(了解)

Maven学习笔记(黑马程序员)

项目构建生命周期:(插件与生命周期内的阶段绑定,在执行到对应生命周期执行对应插件功能)

      1)clean:清理工作(分为pre-clean、clean、post-clean)

      2)default:核心工作,例如编译,测试,打包,部署等

Maven学习笔记(黑马程序员)

   3)site:产生报告,发布站点等

工程模块与模块划分:

Maven学习笔记(黑马程序员)

 

分模块开发与设计:
    将一个项目分成多个maven项目模块,由主模块统一管理

ssm_dao拆分: 

Maven学习笔记(黑马程序员)

ssm_service拆分:

Maven学习笔记(黑马程序员)

ssm_control拆分:

Maven学习笔记(黑马程序员)

 

聚合:
    作用:聚合用于快速构建maven项目工程,一次性管理多个模块。
    方法:新建一个maven模块,只留下pom文件,在pom文件里面将其打包类型设置为pom。
    如何由主模块去管理其他所有模块:
    

  <!--定义该工程为构建工程管理-->

  <packaging>pom</packaging>

  <modules>
            <module>模块名(地址)</module>
            <module>模块名(地址)</module>
            <module>模块名(地址)</module>
  </modules>

//end

    注意:参与聚合操作的模块最终执行的先后顺序与模块间的依赖关系有关,与配置顺序无关

继承:
    作用:通过继承可以是在在子模块(工程)中使用父模块中的依赖配置(与Java继承类似)
    方法:在父模块中加入需要被被子模块继承的依赖:<dependencyManagement>在这中间添加依赖</dependencyManagement>
        然后在子模块的pom文件中配置:
       

<parent>
       <groupId></groupId>
       <artifactId></artifactId>
       <version></version>
       //前面三个与父模块中的坐标相同
       <relativePath>父模块的pom文件的地址</relativePath>
</parent>

    
属性:
    1、自定义属性:
        作用:等同于Java中的变量,方便统一管理重复代码(例如:多个依赖的版本号一致时,当需要全部改变时则只需要修改变量)
        定义格式:
          

 <properties>
           <(变量名)spring.version> (5.1.9.RELEASE)变量值  </(变量名)spring.version>
           <(变量名)junit.version> (4.12)变量值   </(变量名)junit.versio 
 </properties>

        调用格式:${变量名}    
    
    2、内置属性:
        作用:使用maven的内置属性,快速配置
        调用格式:${version}  ${basedir}等

    3、Setting属性:
        作用:使用maven配置文件setting.xml中的标签属性,用于动态配置
        调用格式:${settings.localRepository}

    4、Java系统属性:
        作用:读取Java系统属性
        调用格式:${user.home}
    
    5、环境变量属性:
        作用:读取环境变量属性
        调用格式:${env.JAVA_HOME}
    

资源配置:
    配置资源文件:
        

        <!--配置资源文件对应的信息-->
        <resources>
              <resource>
                    <!--设定配置文件对应的位置目录,支持使用属性动态设定路径-->
                    <directory>地址</directory>
                    <!--开启对配置文件的资源加载过滤-->
                    <filtering>true</filtering>
              </resource>
        </resources>

多环境开发配置:
    

 <!--创建多环境-->
    <profiles>
          <!--定义具体的环境:生产环境-->
          <profile>
                    <!--定义环境对应的唯一名称-->
                   <id>开发环境名称1</id>
 
                    <!--定义环境中的专用的属性值-->
                   <properties>
                      <jdbc.url>jdbc链接</jdbc.url>
                   </properties>
 
                   <activation>
                      <activeByDefault>true</activeByDefault>
                   </activation>
          </profile>
              <!--定义具体的环境:开发环境-->
    </profiles>
 

上一篇:是否可以使用Python / BeautifulSoup从HTML EXCEPT锚点/链接中剥离所有标签?


下一篇:Maven导入hutool依赖报错