Maven 进阶

一、Maven 版本管理

Maven 的推荐版本号约定为:主版本号.次版本号.增量版本号-<里程碑版本>

开发中的版本要以 -SNAPSHOT 结尾,因为这种快照版本是支持 jar 包被覆盖的,那么,开发时候的 Maven 命令应该使用 mvn clean package -U (强制拉一次)

快照版本可以升级为正式版本的条件:

  • 所以自动化测试应对全部通过
  • 项目没有配置任何快照版本的依赖
  • 项目没有配置任何快照版本的插件
  • 项目所包含的代码已经全部提交到版本控制系统中

二、Maven 生命周期和常用命令

compile

执行该命令会把代码进行编译

clean

执行该命令会把 /target 目录下清空

test

执行该命令会运行项目下的所有 test case

package

执行该命令会对项目进行打包

install

将 jar 包安装到本地仓库中,在多模块的项目中,如果依赖的模块发生变更,需要重新执行 install 才能生效

deploy

把本地 jar 包发布到远端私服地址

Maven 的生命周期

理解下边两句话,就理解了 Maven 的生命周期:

A Build Lifecycle is Made Up of Phases.

A Build Phase is Made Up of Plugin Goals.

从左往右,Maven 的命令在执行的过程中,会先执行该命令前面的所有命令。

三、Maven 常用插件

两个插件地址:

https://maven.apache.org/plugins/

http://www.mojohaus.org/plugins.html

tomcat7-maven-plugin

findbugs-maven-plugin

maven-checkstyle-plugin

maven-enforcer-plugin

maven-source-plugin

四、Maven 自定义插件

自定义插件

新建一个 Maven 项目,将 pom.xml 里边的打包方式更改为 <packaging>maven-plugin</packaging>

增加如下依赖:

<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-plugin-api</artifactId>
    <version>3.5.0</version>
</dependency>
<dependency>
    <groupId>org.apache.maven.plugin-tools</groupId>
    <artifactId>maven-plugin-annotations</artifactId>
    <version>3.3</version>
</dependency>

新建一个类,继承 org.apache.maven.plugin.AbstractMojo,实现对应的方法

增加注解 org.apache.maven.plugins.annotations.Mojo,增加 name 属性,代表 plugin 的 goal

mvn install

参数传递:插件类中增加变量,增加注解 org.apache.maven.plugins.annotations.Parameter

使用插件

挂载在项目的 pom.xml 中,增加 pluginexecutionphasegoal 属性:

五、Maven Profile 动态配置文件

a) 使用场景 dev/test/pro

b) 根据 activeProfile 来切换 setting.xml 中设置的私服地址(家和公司两套)

六、Maven 仓库

a)下载

b)安装 解压

c)使用http://books.sonatype.com/nexus-book/reference3/index.html

i.http://192.168.1.6:8081/nexus

ii.admin/admin123

d)发布

i.pom.xml 配置

e)下载jar配置

i.配置mirror

ii.Profile

七、Maven Archetype 模板化

生成一个模板

  • 在项目目录下执行命令:mvn archetype:create-from-project
  • 命令运行成功后,会在工程的 target/generated-sources/archetype 目录下生成一个 Archetype,进入这个目录:cd /target/generated-sources/archetype
  • 如果想要将新生成的 archetype 运行在本地仓库,就运行 maven 命令:mvn install;如果想要共享这个 archetype,就使用 deploy 命令。

八、Maven 反应堆

反应堆

在一个多模块的 Maven 项目中,反应堆(Reactor)是指所有模块组成的一个构建结果,对于单模块的项目,反应堆就是该模块本身,但是对于多模块的项目来说,反应堆就包含了各模块之间继承与依赖的关系,从而能够自动计算出合理的模块构建顺序。

构建顺序一般为:主 POM 的读取顺序 + 继承或者依赖的顺序

模块之间的依赖关系会将反应堆构成一个有向循环图(Directed Acyclic Graph,DAG),各个模块是该图的节点,依赖关系构成了有向边。这个图不允许出现循环,当出现循环依赖时,Maven 就会报错。

裁剪反应堆

有时,在多模块项目中,如果只改了某一个模块的内容,为了加快构建,可以不需要完整构建所有模块,可以有选择地构建,常用命令如下:

  • -am,—also-make,表示同时构建所列模块的依赖模块
  • -amd,-also-make-dependents,表示同时构建依赖于所列模块的模块
  • pl,—projects
  • rf,-resume-from

mvn clean package -Dmaven.test.skip=true -pl api -amd

原文地址:https://www.cnblogs.com/JavaSubin/p/9363470.html

时间: 2024-10-24 20:57:03

Maven 进阶的相关文章

Maven进阶宝典

前言: 团队在开发过程中用的是maven项目,由于对maven的一些打包流程以及相关参数配置不是太了解,因此应大家的需求做一下maven的讲解,为了不误导大家,看了很多相关资料,自己也实验了一下,就把自己觉得对大家有用的东西列出来,做了一些简单的介绍,起到抛砖引玉的作用,希望能对大家能有帮助. 一.什么是maven Maven是一个Java语言编写的开源项目管理工具,是Apache软件基金会的顶级项目.主要用于项目构建,依赖管理,项目信息管理. 二.Maven诞生的背景 Maven这个单词来自于

用起来超爽的Maven——进阶篇

以后随着使用的maven的频率增加,此文件会越来越大,也是为什么需要把默认C:\Users\Administrator\.m2\repository目录改变为D:/OpenSources/repository(1,C盘空间不足2,系统出现问题,重装本地仓库被覆盖) 一.Eclipse Maven插件安装: 下载最新JAVAEE版本的Eclipse,默认已经内置maven插件 下载地址: http://www.eclipse.org/downloads/packages/eclipse-ide-j

【连载】Maven系列(三) 进阶

相关文章: 1.<用起来超爽的Maven--入门篇> 2.<用起来超爽的Maven--进阶篇> 一.Maven坐标: Maven世界拥有大量须要构建jar文件,我们须要找一个用来唯一标识一个构建jar文件的统一规范.那么拥有了统一规范,就能够把查找工作交给电脑来完毕,从而自己主动下载jar文件到本地仓库. Maven坐标是通过一些元素定义的,它们是groupId,artifactId,version,packaging,class-sifer groupId:定义当前Maven项目

【连载】Maven系列(四)——配置私服

相关文章 1.<用起来超爽的Maven--入门篇> 2.<用起来超爽的Maven--进阶篇> 3.<Maven系列(三)   进阶> 一.为什么需要私服 有些公司并不提供外网给程序员,因此不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器:搭建nexus私服,然后程序员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库. 二.配置步骤 第一步:下载nexus-2.6.4-02.war包,然后拷贝到to

Spring mvc+ maven + MyBatis + Oracle + IDEA 项目搭建 - framework 进阶中(一)

原文链接 http://blog.csdn.net/qq184377902/article/details/51493642 结合自身情况加以修改搭建的框架,记录以防备忘,方便日后学习参考. Before building the project framework  ... 项目环境 IntelliJ IDEA 2016.1.2.JDK 1.8.0_31.Apache-maven-3.5.0.Tomcat-9.0.0.M11 Maven项目搭建 自行百度 .. Build project fr

maven入门和进阶 基础入门 希望帮助大家maven 教程

安装maven,创建和运行web项目 安装maven和在eclipse中整合maven 1下载maven 百度云盘地址: http://pan.baidu.com/s/1i32gn9F 需要将setting.xml 的私服配置成你个人使用的私服地址 下载并解压到本地 2 配置环境变量 Path下添加maven bin目录 3测试是否成功配置 至此, maven安装配置成功. 注意:此文档默认你的eclipse支持maven项目, 存在maven eclipse插件 (Eclipse没有安装mav

Maven系列三 进阶

一.Maven坐标: Maven世界拥有大量需要构建jar文件,我们需要找一个用来唯一标识一个构建jar文件的统一规范:那么拥有了统一规范,就可以把查找工作交给电脑来完成,从而自动下载jar文件到本地仓库. Maven坐标是通过一些元素定义的,它们是groupId,artifactId,version,packaging,class-sifer groupId:定义当前Maven项目隶属项目 artifactId:定义实际项目中的一个模块 version:定义当前项目的当前版本 packagin

Java-Web进阶系多个快 三带极速六合AB盘列(三)--eclipse 配置maven

联系方式:QQ:2747044651 网址联系方式:QQ:2747044651 网址maven联系方式:Maven项联系方式:目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 简单点说就是管理第三方jar依赖和插件,打包,部署,项目拆分的功能. eclipse使用maven下载mavenmaven官方下载 maven下载 下载后解压,开始配置eclipseeclipse配置maven 配置setting,使用阿里镜像找到maven解压位置,apache

Spring Data JPA进阶——Specifications和Querydsl

Spring Data JPA进阶--Specifications和Querydsl 本篇介绍一下Spring Data JPA中能为数据访问程序的开发带来更多便利的特性,我们知道,Spring Data repository的配置很简单,一个典型的repository像下面这样: public interface CustomerRepository extends JpaRepository<Customer, Long> { Customer findByEmailAddress(Str