项目管理利器Maven

maven介绍及环境搭建

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

常用命令

  • mvn -v 查看maven版本
  • mvn compile 编译
  • mvn test 测试
  • mvn package 打包
  • mvn clean 删除target
  • mvn install 安装jar到本地仓库中

maven生命周期及插件

  • 完整的项目构建过程

    清理、编译、测试、打包、集成测试、验证、部署

  • 生命周期

名称功能
clean清理项目
default构建项目
site生成项目站点


  • 简述

三套生命周期相互独立,每个生命周期包含不同的阶段。这些阶段会顺序执行,后面的阶段依赖于前面的阶段。

clean清理项目阶段

  • pre-clean 执行清理前的工作
  • clean清理上一次构建生成的所有文件
  • post-clean执行清理后的文件

default构建项目(最核心)

  • compile
  • test
  • package
  • insta

site 生成项目站点

  • pre-site 在生成项目站点前要完成的工作
  • site 生成项目站点文档
  • post-site 在生成项目站点后要完成的工作
  • site-deploy 发布生成的站点到服务器上

pom.xml常用元素

  • project 根元素 ,进行约束设置
  • modelVersion 版本号
  • groupId 主项目名
  • artifactId 标识模块名
  • version 当前项目版本号

    格式通常类似0.0.0,第一个0表示大版本号,第二个0表示分支版本号,第三个0表示小版本号。

    标识含义
    snapshot快照
    alpha内部测试
    beta公测
    release稳定
    GA正式公布
  • packaging 表示项目的打包方式,默认为jar

  • name 项目描述名
  • url 项目地址
  • description 项目描述
  • developers 开发人员列表
  • licenses 许可证信息
  • organization 组织信息
  • dependencies 依赖列表
  • dependency 依赖项
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <!-- 依赖项作用域 -->
      <scope>test</scope>
      <!-- 设置依赖是否可选 -->
      <optional></optional>
      <!-- 排除依赖传递列表 -->
      <exclusions></exclusions>
    </dependency>
  • build 为构建行为提供相应的支持
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.4</version>
            <!-- 将source绑定到package阶段执行 -->
            <executions>
                <execution>
                    <phase>
                        package
                    </phase>
                    <goals>
                        <goal>
                            jar-no-fork
                        </goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
  </build>

依赖范围

  • compile 默认级别,编译测试及运行都有效
  • provided 在编译和测试时有效
  • runtime 在测试和运行时有效
  • test 只在测试时有效
  • system 与provided差不多,但与本机系统相关联,可移植性差
  • import 导入的依赖范围,只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置

依赖传递

依赖具有传递性,默认情况下。若C依赖于B,B依赖于A,则C的依赖列表里不仅有B还会有A。可以通过exclusions消除传递依赖。

依赖冲突

  • 原则1:短路优先

    版本冲突时,优先解析路径短的版本

  • 原则2:若路径长度相同,谁先声明则先解析谁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值