maven

maven

Posted by nomadli on March 28, 2018

maven 概述

  1. mvn 命令指定任何步骤,都会自动执行其之前的步骤
  2. mvn 是一个执行框架,具体执行由插件完成

maven 分三部分

  1. CleanLifecycle 清理
    1. pre-clean
    2. clean
    3. post-clean
  2. DefaultLifecycle 编译、测试、打包、部署
    1. validate 验证项目是否正确、信息是否可用
    2. generate-sources 生成需要包含在编译过程中的源代码
    3. process-sources 处理源代码,比如过滤一些值
    4. generate-resources 生成包含在打包过程中的资源文件
    5. process-resources 复制处理资源文件至目标目录
    6. compile 编译项目的源代码
    7. process-classes 处理编译生成文件如对类进行字节码增强
    8. generate-test-sources 生成测试源码
    9. process-test-sources 处理测试源码,比如过滤一些值
    10. generate-test-resources 生成测试需要的资源文件
    11. process-test-resources 处理测试资源文件至测试目录
    12. test-compile 编译测试源码至测试目标目录
    13. test 使用单元测试框架运行测试
    14. prepare-package 执行一些准备打包必要的操作
    15. package 将编译好的代码打包成可分发的格式
    16. pre-integration-test 在集成测试运行之前需要的动作
    17. integration-test 处理包并发布至集成测试环境
    18. post-integration-test 执行在集成测试运行后的动作
    19. verify 执行所有检查,验证包是有效的,符合质量规范
    20. install 安装包至本地仓库
    21. deploy 复制最终的包至远程仓库
  3. SiteLifecycle 生成报告
    1. pre-site 执行生成站点文档之前完成的工作
    2. site 生成项目的站点文档
    3. post-site 执行在生成站点文档之后完成的工作
    4. site-deploy 将生成的站点文档部署到特定的服务器上

maven 插件

  1. mvn [插件名]:[目标名]
  2. org.apache.maven.plugins 官方插件组ID(groupId)
  3. maven-compiler-plugin 编译插件ID(artifactId)
  4. maven-deploy-plugin 发布插件
  5. maven-install-plugin 安装插件
  6. maven-surefire-plugin 单元测试
  7. maven-source-plugin 源码测试

maven 命令

  1. mvn –version 显示版本信息
  2. mvn clean 清理项目生产的临时文件,一般是模块下的target目录
  3. mvn compile 编译模块下的src/main/java目录
  4. mvn package 打包工具模块下的target目录生成jar或war等
  5. mvn test 执行src/test/java/下junit的测试用例.
  6. mvn install 将打包的jar/war文件复制到你的本地仓库中
  7. mvn deploy 将打包的文件发布到远程仓库
  8. mvn site 生成项目相关信息的网站
  9. mvn eclipse:eclipse 将项目转化为Eclipse项目
  10. mvn dependency:tree 打印出项目的整个依赖树
  11. mvn archetype:generate 创建Maven的普通java项目
  12. mvn tomcat:run 在tomcat容器中运行web应用
  13. mvn jetty:run 调用Jetty插件的Run目标
  14. -D 传入属性参数
  15. -P 使用指定的Profile配置
  16. -e 显示maven运行出错的信息
  17. -o 离线执行命令,即不去远程仓库更新包
  18. -X 显示maven允许的debug信息
  19. -U 强制去远程更新snapshot的插件或依赖

maven 仓库配置 setting.xml

  1. 本地仓库地址 Nexus仓库管理器 xx/xx/ 默认home/.m2/repository
  2. 覆盖项目pom中同名配置 包括激活、仓库、插件、属性
  3. 仓库镜像 唯一id 名称 镜像了哪些库 *所有 地址
  4. 设置远程仓库 一个仓库 唯一id 名称 地址 / 版本类型 是否使用 更新频率 验证失败后如何处理
  5. 插件库 类似4
  6. 是否与用户交互获取输入 默认true
  7. 是否用plugin-registry.xml管理插件
  8. 是否使用离线模式
  9. 默认groupId
  10. 代理配置 http://socket:// proxy.somewhere.com 8080 proxyuser somepassword *.google.com|ibiblio.org
  11. 服务器配置 server001 my_login my_password ${usr.home}/.ssh/id_dsa some_passphrase 664 775 传输额外配置

maven 项目基础配置 pom.xml

  1. 4.0.0 maven 版本
  2. 项目组织ID 生成jar包路径
  3. 项目ID
  4. 1.0.0-SNAPSHOT 版本号
  5. 打包机制 pom,jar, maven-plugin, ejb, war, ear, rar, par 默认jar
  6. 副属构建 由副属插件来定义 如javadoc java sources 或依赖针对不同的JDK有不同包,指定包名
  7. 项目依赖 com.winner.trade trade-test 1.0.0-SNAPSHOT 依赖范围compile(编译范围)、 provided(已提供范围)、runtime(运行时范围)、 test(测试范围)、system(系统范围) false 是否可选 排除此库依赖库,防版本冲突 org.slf4j slf4j-api
  8. 定义常量 UTF-8

maven 项目配置 pom.xml

  1. 生成文件名
  2. 目标目录
  3. build 名
  4. 配置文件变量替换 如${spring.version} ../filter.properties
  5. 资源配置 目标目录 源路径 是否替换参数 包含列表 **/*.xml 排除列表 jdbc.properties
  6. 测试资源 同05
  7. 源码目录
  8. 脚本目录 直接拷贝
  9. 测试单元目录
  10. 编译中间文件目录
  11. 测试中间文件目录
  12. 扩展构建 如wagon-maven-plugin ssh传输
  13. 使用的插件 maven-assembly-plugin 2.5.5 执行目标 assembly package 目标构建阶段 构建名 single false是否被子pom继承 插件参数 ${finalName} false assembly.xml false 依赖插件是否下载 额外依赖 ... true是否被继承
  14. 定义与子项目的共同

maven 项目deploy发布配置 pom.xml

  1. 发布总节点
  2. 发布远程仓库信息 true自动生成版本号 repo-id repo-name file://${basedir}/target/deploy
  3. 快照 同02
  4. 部署需要的网站信息 site-id site-name
  5. 项目的下载地址

  6. 重定义信息

maven 其它 pom.xml

  1. 仓库 依赖仓库 / layout> default</layout> 插件仓库
  2. 配置列表 自动触发逻辑 false默认是否触发 1.7 如果jdk是1.7被激活 如果操作系统匹配被激活 Windows XP Windows x86 5.1.2600 检查属性值激活 mavenVersion 2.0.3 检查文件 xx/xx/xx 存在激活 xx/xx/xx 不存在激活
  3. 报表配置
  4. 项目管理配置 bug 持续集成
  5. 项目信息配置