博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maven详解
阅读量:3960 次
发布时间:2019-05-24

本文共 1786 字,大约阅读时间需要 5 分钟。

Maven是什么

Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建依赖管理信息管理

具体作用:

  • 项目遇到的编译,测试,运行,打包,部署等一系列操作比较繁琐.
  • jar(手动的管理jar包依赖) jar包之间冲突,版本适配。(解决jar文件依赖问题)
  • 如果千万级别项目。Project(业务比较复杂) 拆分子项目(便于开发过程中的控制和管理)。
  • 自动部署

Maven主要功能

1项目构建

项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】六个步骤

理想的项目构建是高度自动化,跨平台,可重用的组件,标准化的,使用maven就可以帮我们完成上述所说的项目构建过程。

 

2依赖管理

依赖管理指的使用Maven来管理项目中使用到的jar包,Maven管理的方式是“自动下载项目所需要的jar包,统一管理jar包之间的依赖关系”。

在多个项目中共享JAR通过配置文件确定使用的jar,不需要手动的导入jar。

3约定优于配置的思想

约定优于配置,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。

本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为Sale的类,那么数据库中对应的表就会默认命名为sales。只有在偏离这一约定时,例如将该表命名为”products_sold”,才需写有关这个名字的配置。

如果所用工具的约定与你的期待相符,便可省去配置;反之,你可以配置来达到你所期待的方式。

Maven概念介绍

  1. Project:任何要构建的工程。一个工程可以依赖其它的工程;一个工程也可以由多个子工程构成
  2. 依赖:一个项目需要使用另一个项目,项目可以被拆分多个模块
  3. POM:pom.xml是Maven的核心文件,它是指示Maven如何工作的元数据文件

  4. GroupID是项目组织唯一的标识符,组ID,是main目录里java的目录结构。groupId要求:唯一,一般使用域名倒写

  5. ArtifactID就是项目的唯一的标识符,对应项目的名称

  6. Dependency:依赖,一个工程会依赖其它的包。被依赖的包就被称为dependency。它一般是其它工程的Artifact

  7. Plug-in:Maven由插件组成的,功能由插件提供。插件提供goal,并根据POM找到的元数据去完成工作

  8. Repository:仓库

Maven应用场景

分类:本地仓库、第三方仓库、中央仓库

本地仓库

项目使用jar包时,优先从本地仓库查询

修改本地库位置:在$MAVEN_HOME/conf/setting.xml文件的

Maven会将工程中依赖的构件(Jar包)从远程下载到本机一个目录下管理

通常默认在$user.home/.m2/repository下,构件的存储方式通常是groupId/artifactId/version/*.jar

第三方仓库

第三方仓库,又称为内部中心仓库,也称为私服

私服:一般是由公司自己设立的,只为本公司内部共享使用(使用私服为了减少对中央仓库的访问)

中央仓库

Maven内置了远程公用仓库:http://repo1.maven.org/maven2

中央仓库由Maven官方维护,内有大量的常用类库

工程依赖的jar包如果本地仓库没有,默认从中央仓库下载

常用Maven命令

Maven命令列表

mvn –version

显示版本信息

mvn clean

清理项目生产的临时文件,一般是模块下的target目录

mvn compile

编译源代码,一般编译模块下的src/main/java目录

mvn package

项目打包工具,会在模块下的target目录生成jar或war等文件

mvn test

测试命令,或执行src/test/java/下junit的测试用例.

mvn install

将打包的jar/war文件复制到本地仓库中,供其他模块使用

mvn archetype:generate

创建Maven的普通java项目

mvn tomcat7:run

在tomcat容器中运行web应用

注意:运行maven命令的时候,首先需要定位到项目的pom.xml文件所在的目录。否则,需通过参数来指定项目的目录

 

转载地址:http://tpazi.baihongyu.com/

你可能感兴趣的文章
POJ1458---(最长公共子序列最基础题)
查看>>
POJ3356---(最长公共子序列)
查看>>
二叉树基础知识大全(核心理解遍历)
查看>>
03-树1 树的同构(25 分) 2017秋 数据结构 陈越、何钦铭
查看>>
04-树4 是否同一棵二叉搜索树(25 分)---陈越、何钦铭-数据结构-2017秋
查看>>
表达式求值(C实现,实现多括号,浮点数)---栈的实现以及运用。
查看>>
有序链表的合并(数据结构---单链表)
查看>>
栈实现(数据结构---数组,链表 C实现)
查看>>
POJ3903(dp,最长上升子序列,最基础题)
查看>>
POJ1836-Alignment(最长上升子序列)
查看>>
POJ 1251 Jungle Roads(最小生成树简单题)
查看>>
HDU 1690---Bus System(Floyd模板题+合理定义INF)
查看>>
POJ 2240---Arbitrage(Floyd的dp思想)
查看>>
Dijkstra算法---模板
查看>>
POJ 3680(费用流)
查看>>
校oj10532: 生成字符串(dp,最优状态转移)
查看>>
平衡二叉树(AVL树)
查看>>
POJ1521---哈夫曼编码,求最优WPL
查看>>
POJ---2010(Moo University - Financial Aid,优先队列)
查看>>
POJ---3662(Telephone Lines,最短路+二分*好题)
查看>>