前言

今天就来聊聊Maven的基础和一些比较概念性的东西,还有一些常用的Maven命令啥的,主要是某人脑子记不住,记在博客中让她自己看吧,省的费心给她找。

后续的文章会聊到Maven的一些比较高级用法,像自定义插件,私服啥的,欢迎各位大佬来讨论哦!

概念

Maven 是一个项目管理和整合工具。Maven 为开发者提供了一套完整的构建生命周期框架。开发团队几乎不用花多少时间就能够自动完成工程的基础构建配置,因为 Maven 使用了一个标准的目录结构和一个默认的构建生命周期。

在有多个开发团队环境的情况下,Maven 能够在很短的时间内使得每项工作都按照标准进行。因为大部分的工程配置操作都非常简单并且可复用,在创建报告、检查、构建和测试自动配置时,Maven 可以让开发者的工作变得更简单。

Maven 的主要目的是为开发者提供

  1. 一个可复用、可维护、更易理解的工程综合模型
  2. 与这个模型交互的插件或者工具

Maven 工程结构和内容被定义在一个 xml 文件中(即谈到的pom.xml)

安装配置

Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK。

官网下载后解压即可,一般都是在开发工具里面配置Maven的位置就可以了,如果喜欢敲命令的话,那就添加一下环境变量。

然后配置一下本地仓库地址和镜像仓库,提供一下示例:

maven下载地址:Maven – Download Apache Maven 

JDK原生打包

在Maven工具出现之前,基本上用的都是Ant(打包构建项目工具)打包,由于现在Maven越来越流行,使用Ant打包的项目就越来越少了,这些工具基本上都是通过对JDK原生打包的方式进行了一层封装,编译打包底层还是基于JDK带有的工具实现的。

现有一个demo测试项目,结构路径如下:

我们进入到这个src的目录里面,使用命令进行编译:

编译好后就可以进行打包成jar包文件了,jar文件又分为两种,一种是直接被引用的jar包,另外一种是可以直接执行的可执行jar包,打包命令如下:

这时打的包仅是一个普通的jar包,如果要打成可执行包的话,那么就得引用一个MANIFEST.MF文件了,JDK也是根据这个文件加载相关的类信息的,新建一个manifest.txt文件,内容如下(每个冒号后面都需要有空格,每行都需换行)

Manifest-Version: 1.0
Created-By: 1.8.0_101 (Oracle Corporation)
Main-Class: com.compile.App

执行一下命令

这样打出来的jar包就是可执行包啦。使用以下命令启动jar包

java -jar compile.jar

使用Maven打包

我们需要创建一个Maven Project项目,我们这里使用quickstart原型(快速创建)

创建好后再pom.xml里面的build标签里面添加Maven打包插件,如果不需要可执行jar包的话,把configuration标签去掉就好了

POM结构

先放在这里,起码有个概念,会在后面的博文中讲到

Maven项目结构

项目结构是一个约定好了的目录,如果有些改动的话,可能项目都不能正常运行或打包(博主碰到过一次,贼难受)

约定的目录(不可改):

src/main/java –存放项目的.java文件

src/main/resources –存放项目资源文件。比方Spring,Mybatis配置文件

src/test/java –存放全部测试.java文件,比方JUnit測试类

src/test/resources ---测试资源文件

target ---项目输出位置,编译完毕后的东西放到这里面

pom.xml

Maven生命周期

在 Maven的的生命周期里面,理想的标准构建流程为:清理->编译 -> 测试 -> 报告 -> 打包 -> 部署。并且在一个pom.xml里面全部搞定

而Maven只是一个抽象规范流程,每个周期里面的流程是有具体的插件来执行的

而每个生命周期的预设如下:

阶段 处理 描述
验证 validate 验证项目 验证项目是否正确且所有必须信息是可用的
编译 compile 执行编译 源代码编译在此阶段完成
测试 Test 测试 使用适当的单元测试框架(例如JUnit)运行测试。
包装 package 打包 创建JAR/WAR包如在 pom.xml 中定义提及的包
检查 verify 检查 对集成测试的结果进行检查,以保证质量达标
安装 install 安装 安装打包的项目到本地仓库,以供其他项目使用
部署 deploy 部署 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程

运行任何一个阶段,都会从其所在生命周期的第一个阶段开始,顺序执行到指定的阶段,如:

mvn package  --- 本义:执行default周期的package阶段,maven会自动从process-resources阶段开始运行到package阶段结束

Maven插件

插件plugin是绑定到生命周期,承担实际功能的组件。mvn运行时,自动关联插件来运行

下图是maven默认的各阶段对应的插件列表:

生命周期

生命周期阶段

插件目标

执行任务

clean

pre-clean

clean

maven-clean-plugin:clean

删除项目的输出目录。

post-clean

site

pre-site

site

maven-site-plugin:site

post-site

site-deploy

maven-site-plugin:deploy

default

process-resources

maven-resources-plugin:resources

复制主资源文件至主输出目录

compile

maven-compiler-plugin:compile

编译主代码至主输出目录

process-test-resources

maven-resources-plugin:testResources

复制测试资源文件至测试输出目

test-compile

maven-compiler-plugin:testCompile

编译测试代码至测试输出目录

test

maven-surefire-plugin:test

执行测试用例

package

maven-jar-plugin:jar(ejb:ejb jar:jar rar:rar war:war)

创建项目jar包

install

maven-install-plugin:install

将项目输出构件安装到本地仓库

deploy

maven-deploy-plugin:deploy

将项目输出构件部署到远程仓库

Maven常用命令

mvn clean  执行清理阶段生命周期

mvn compile 执行编译阶段生命周期

mvn package 执行打包阶段生命周期

mvn install 安装jar到本地库

mvn dependency:tree 将当前项目pom.xml中引入的依赖打印出来

Maven基础及概念相关推荐

  1. maven 打包指定依赖包_[Maven]-Maven基础-01-基础概念

    Maven基础 1.基础概念 Maven基础概念 什么是Maven 什么是理想的项目构建? 高度自动化,跨平台,可重用的组件,标准化的 什么是依赖?为什么要进行依赖管理? 自动下载,统一依赖管理 有哪 ...

  2. 【Maven教程】-Maven基础篇(概念、思考、安装)

    Maven教程-Maven基础篇之Maven实战入门2020年 第一章 Maven简介 1.1 软件是一个工程 1.2 传统项目开发存在的问题 1.3 Maven概述 1.4 Maven核心概念 1. ...

  3. maven基础概念学习1

    2019独角兽企业重金招聘Python工程师标准>>> 1.maven是什么? 百度百科: Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档 ...

  4. Maven学习——maven基础

    maven基础 前言 一.maven简介 mave的功能: 二.下载和安装 三.maven的基础概念 1.仓库 2.坐标 3.本地仓库配置 四.制作Maven项目 纯手工制作 插件制作 IDEA制作 ...

  5. Hive基础知识概念

    Hive基础 Hive 概念 Hive优缺点 优点 缺点 Hive名词概念 hive底层执行流程 hive 与RDBMS传统关系型数据库对比 查询语言 数据更新 执行延迟 数据规模 hive基本数据类 ...

  6. Maven基础——什么是Maven

    目录 Maven概述 一.什么是maven? 二.Maven能解决什么问题 三.依赖管理的概念 四.一键构建概念 Maven基础--Maven安装与仓库类型介绍 Maven概述 一.什么是maven? ...

  7. Maven基础-01-笔记

    Maven基础-01-笔记 Maven基础概念(坐标.仓库) 1.仓库 2.坐标 3.仓库配置 Maven基础概念(坐标.仓库) 1.仓库 仓库:用于存储资源,主要是各种jar包 关于仓库,我们前面讲 ...

  8. 2021-03-12 Python基础核心概念 变量和简单数据类型

    Python基础核心概念 1 变量和简单数据类型 变量命名格式:变量名 = "赋值" 1.1 变量使用规范 使用变量时,需要遵守一些规则.违反这些规则将引发错误. ~变量名只能包含 ...

  9. Maven基础与私服搭建

    Blog诞生记 Android studio构建项目有时候build.gradld构建缓慢,严重影响了开发心情,这仅是次要因素,最重要的是leader为了考虑团队发展,建议搭建Maven私服,把项目模 ...

最新文章

  1. linux 声卡权限,archlinux的声卡问题如何解决
  2. oracle(thin),kettle thin方式连接oracle,MySQL、SqlServer
  3. d3js mysql_D3js技术文档 可视化展现
  4. 熟练使用Jmeter,这个知识点你一定要看
  5. java学生奖学金管理系统_EasyUI+JavaWeb奖助学金管理系统[6]-登录功能实现
  6. windows系统搭建redis集群
  7. maven阿里仓库配置教程
  8. 差分编码与译码代码编写
  9. [Java聊天室服务器]实战之六 去除死链接
  10. 谢菲尔德大学计算机科学学院地理位置,2020年谢菲尔德大学在哪里及校区详细地址介绍...
  11. 支付二维码整合 - 三码合一支持支付宝、QQ、微信
  12. android的app,用java程序开发
  13. mysql 开启事物_mysql事务的开启
  14. beyond the ‘PHYSICAL‘ memory limit. Current usage: 1.0 GB of 1 GB physical memory used;
  15. FRDM-KW41Z开发板使用显示驱动芯片HD44780的方法
  16. 信创操作系统--统信UOS桌面操作系统博文汇总目录
  17. 九年老程序员推荐的java书籍,建议收藏!!
  18. 苹果cms整合dplayer播放器增加记忆+P2P播放+自动下一集
  19. 瑞芯微RV1126平台----yolov5输出后处理C++实现
  20. java语言中的while、do while、for循环

热门文章

  1. else应输入一个语句是什么意思_Python学习基础篇 -4: Python中的转弯---分支语句
  2. 计算机考试设计会议邀请函,计算机二级常见考点之使用合并技术制作邀请函
  3. MVC 模式/Servlet/JSP 编译原理剖析:Servlet 组件到底属于 MVC 模式的哪一层?
  4. Python练习之 对文件进行创建,然后重命名文件最近进行文件删除
  5. 七、Python第七课——有关列表的二三事(切片、切片的遍历和复制)
  6. Win7系统转到Win10系统的装机方法
  7. mount --bind的用处
  8. f分布表完整图_【教育统计答疑】如何理解正态分布、均值分布、^2分布、t分布和F分布...
  9. 存储器是计算机的记忆装置,存储器(Memory)
  10. kettle同步数据到hive 巨慢_超详细教程,kettle ETL mysql到hadoop hive数据抽取,值得收藏...