项目管理利器Maven

来源:互联网 发布:淘宝网恐龙玩具 编辑:程序博客网 时间:2024/05/16 05:13

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:若路径长度相同,谁先声明则先解析谁

原创粉丝点击