Maven

65 阅读3分钟

Maven使用

用于管理项目的工具,统一约定的项目结构

  • pom文件管理依赖
  • src下写代码:包含main具体项目代码,test测试代码
  • target构建/编译输出目录

常用项目生命周期:可以在pom配置跳过某些阶段,如打包是包含测试的

  • clean:清理target
  • complile:编译代码=>class文件
  • test:测试,自动运行test下的所有测试
  • package:打包=>生成jar或者war
  • deploy:部署到远程仓库
  • install:部署到本地仓库

基础标签

maven里面会定义:当前项目的一些基础信息,一些依赖信息,打包类型,maven用来构建包的工具这些。

导入springboot的方式

  • BOM方式:Bill Of Materials,物料清单,集中管理依赖项的版本信息。不包含实际的代码或资源,仅仅声明一组依赖项的版本,从而使其他项目在引入这些依赖时无需重复指定版本,放在dependencyManagement里面。

       <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.boot</groupId> <!--groupid:组织名称 -->
                    <artifactId>spring-boot-dependencies</artifactId> <!--模块:组织名称 import作用域表示将指定POM中的依赖管理导入到当前POM中 -->
                    <version>${spring-boot.version}</version>
                    <type>pom</type><!--依赖的类型,默认为jar。这里设置为pom,是因为这个模块没有代码,用来管理jar包的-->
                    <scope>import</scope><!--import作用域表示将指定POM中的依赖管理导入到当前POM中 -->
                </dependency>
            </dependencies>
       </dependencyManagement>    
    
  • 继承的方式 : 继承属性,继承父pom配置好的插件,已经导入的依赖(相当于父pom写过的子pom就不用再写了)

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>${spring-boot.version}</version>
    </parent>
    

dependencyManagement:仅仅管理依赖版本,并真正不导入

dependencies:导入依赖,没有版本号会从dependencyManagement中寻找

依赖中的scope标签:用于声明依赖生效的位置,比如在测试的时候需要,打包的时候不需要

多模块开发

<packaging>pom</packaging> <!--声明打包方式,默认jar包:pom通常用于实现多模块开发,jar就是打成jar包,war打成可以放到tomcat容器内运行的war包 -->
  • pom:其他模块在引用的时候,maven只会解析其pom,声明成pom,我们也能通过maven插件使得在打包的时候打成jar或者war包
  • 当一个依赖的打包类型是 jarwar 时,如果被声明为依赖,Maven 会尝试下载并引入完整的包文件

多模块开发:通常构建项目打包方式为pom,模块打包方式为jar,启动模块打包方式看情况用jar或者pom

  • 在模块内继承
  • 在项目内聚合

继承

通过一个parent标签指定继承父pom,maven是单继承。

聚合

通过一个父项目一次性构建多个模块,通过modules标签聚合多个子模块,每次父项目构建时都会同时构建所有子模块。

私服

版本:

  • 快照版本:不稳定版本,当前还在开发,实时更新到仓库,测试或者开发会根据需要从仓库下载快照版本进行项目构建 maven会根据是否带有-SNAPSHOT来判断是快照版本还是正式版本,deploy后会发布依赖到仓库
  • 正式版本:稳定版本

公司内会有自己的maven私服,直接用同事的maven配置文件即可。一般需要配置:

  • 私服的地址:mirrors 标签
  • 访问的用户密码 : servers 标签
  • 配置下载快照版本的仓库:开发的时候可能需要实时的使用仓库的快照版本进行构建 实现不改版本号的情况,实时从仓库拉取依赖构建项目
  • 配置发布依赖的地址:需要单独配置快照版本和正式版本