maven简单介绍

maven简单介绍,第1张

maven简单介绍 1. 下载安装

maven官网:http://maven.apache.org/download.cgi

建议Windows平台下载*.zip压缩包,而Linux平台下载.gz压缩包

  1. 下载完放到指定目录下解压即可,然后配置一下环境变量,在cmd里面使用mvn -v 命令查看是否安装成功即可
  2. 配置远程仓库镜像地址,下面推荐使用阿里的镜像仓库,在公司需要配置公司的私有仓库
    
    	nexus-aliyun
    	*
    	Nexus aliyun
    	http://maven.aliyun.com/nexus/content/groups/public
    
2. Maven的约定

Maven采用了”约定优于配置(Convention over Configuration,CoC)”的原则,根据此原则,Maven的主要约定有如下几条:

  • 源代码应该位于${basedir}/src/main/java路径下
  • 资源文件应该位于${basedir}/src/main/resourse路径下
  • 测试代码应该位于${basedir}/src/test路径下
  • 编译生成的class文件应该位于${basedir/target/classes}路径下
  • 项目应该会产生一个JAR文件,并将生成的JAR包放在${basedir}/target路径下
3. Maven的简化版生命周期


上图就是maven的简化版生命周期,分别介绍一下:

  • clean:执行清理, 就是删除 target 文件夹
  • validate: 验证项目是否正确,所有必要的信息可用
  • compile: 编译项目的源代码
  • test : 使用合适的单元测试框架测试编译的源代码。
  • package : 项目打包
  • verify: 对集成测试的结果执行任何检查,以确保满足质量标准
  • install : 安装到本地仓库
  • deploy: 部署到远程仓库

下图显示了默认的生命周期所包含的核心阶段的执行过程:

4. Maven的坐标(coordinate)

POM需要为项目提供一个唯一标识符,
这个标识符就被称为Maven坐标,Maven坐标由4个元素组成

  • groupId: 该项目的开发者的域名
  • artifactId:指定项目名
  • package: 指定项目打包的类型
  • version: 指定项目的版本
5. Pom文件玩法

下面我就从0新搭建一个maven父子工程来讲一些基础玩法哈

  • 创建父工程

  • 因为这是父工程,我就把src删掉了,没啥用,看到的就是下面这个
  • modelVersion : 这个创建maven就会自动生成,指定了当前POM模型的版本,对于Maven2及Maven 3来说,它只能是4.0.0
  • 其他三个是你自己创建时定义的,具体看图中注释哈
5.1 父工程里面

几个常用的配置:

5.1.1 配置 pom
  • 定义packaging为pom,表示他是爸爸,如果存在子工程,这里必须时pom。表示子工程需要继承父工程
  pom
  • name 标签:开发常用的简称,推荐中文结合
 ${project.artifactId} | 测试父工程

  • description 标签:核心功能和在整个架构中的作用,就是一些描述信息
  • inceptionYear 标签: 开发年份
  • url 标签: url链接
5.1.2 配置 parent
  • 指定父工程:
    接下来是指定父工程,比如我指定boot的版本是2.1.5
    如果这段配置放在父工程里面,接下来所有的子工程都不需要配置,直接继承使用即可
 
        org.springframework.boot
        spring-boot-starter-parent
        2.1.5.RELEASE
    
5.1.3 配置 properties
  • 配置 properties :

  1.8
  Greenwich.RELEASE
  0.9.0.RELEASE
   1.16.20
 

定义jar包的版本库,用来统一版本号,避免冲突
注意: boot和Cloud版本是有对应关系的,搞不清访问下面这个链接,是官方提供的:
https://start.spring.io/actuator/info

5.1.4 配置 dependencyManagement
  • 配置 dependencyManagement声明依赖:
 
        
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
            
            
                org.springframework.cloud
                spring-cloud-alibaba-dependencies
                ${spring-cloud-alibaba.version}
                pom
                import
            
            
            
                org.projectlombok
                lombok
                ${lombok.version}
                provided
            
        
    

dependencyManagement只是声明依赖,并不实现引入,因此子项目需要显式的声明需要用的依赖。
如果不在子项目中声明依赖,是不会从父项目中继承下来的;
只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;
另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本;

通俗点说就是,dependencyManagement只是一个声明定义,子工程要用,就在子工程里面直接用,不需要指定版本号,会引用父工程的版本号,如果子工程不想用父工程里面声明的版本号,就自己指定,完事;

注意:pomimport 的玩法:
pom和import的作用在于解决maven的单继承问题
通俗一点的理解就是,你可以理解为把外面的parent扔到了dependencyManagement里面,比如上面的 spring-boot-starter-parent 是通过parent标签放在外面的,现在我把它丢到dependencyManagement里面,如果想达到相同的效果,就必须使用pom和import标签;位置不同,使用的标签不同而已

5.1.5 配置 dependencies

注意: 在父工程里面配置dependencies,会强制性的会添加到子模块当中,子模块一定会加载,所以这里我们一般不配置

5.16 relativePath 玩法


如上图所示:加在那的作用就是表示一直从远程仓库获取,不走本地仓库
默认是…/pom.xml 但是如果设定为空值,不就是避开本地仓库嘛哈哈

MAVEN构建jar包时候查找顺序:
relativePath元素中的地址–本地仓库–远程仓库

5.2 子工程

基于父工程创建子工程,以上面的为案列:



    
        wql-maven
        com.ooo
        1.0.0-SNAPSHOT
    
    4.0.0

    wql-maven-user

默认会关联父工程,因为版本已经在父工程定好了,我们只需要引入需要的依赖即可,不需要指定版本,避免了版本冲突问题

    jar
    ${project.artifactId} | 测试user子工程

    
    
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-seata
        
    
6. scope 标签玩法

指定依赖库起作用的范围。
该子元素可接受compile、provided、test、system、runtime、import等值;

  • compile:默认的范围,编译、测试、打包时需要

  • provided:表示容器会在runtime时提供

  • runtime:表示编译时不需要,但测试和运行时需要,最终打包会包含进去

  • test:只用于测试阶段

  • system:与provided类似,但要求该JAR是系统中自带的

    当maven依赖本地而非repository中的jar包,sytemPath指明本地jar包路径

  
      com.oracle
      ojdbc7
      12.0.1
      system 
    ${project.basedir}/src/main/resources/lib/ojdbc7.jar
 
  • import:继承父POM文件中用dependencyManagement配置的依赖,import范围只能在dependencyManagement元素中使用(为了解决多继承)
7. 打包

直接在父工程里面配置mave打包插件即可,子工程不需要配置,但是子工程需要指定生成jar包的名字

  • 父工程里面
    
        wql-maven
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    
  • 子工程里面
 
        wql-maven-admin
    

看自己搭配哈,用法很多种,打包的时候,可以通过父工程一键打包即可;

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5612067.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存