ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-12-12 15:01:34  阅读:201  来源: 互联网

标签:maven 依赖 Maven 程序员 pom 模块 黑马 属性


一、Maven简介

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

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

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项目(手动制作)

 idea创建第一个Maven工程:

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

 pom.xml中添加插件:

依赖配置格式:

 

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

隐藏依赖实现方法:

         <optional>true</optional>

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

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

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

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

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

  soupe参数:     

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

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

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

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

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

工程模块与模块划分:

 

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

ssm_dao拆分: 

ssm_service拆分:

ssm_control拆分:

 

聚合:
    作用:聚合用于快速构建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>
 

标签:maven,依赖,Maven,程序员,pom,模块,黑马,属性
来源: https://blog.csdn.net/m0_46381569/article/details/121871855

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有