Maven

Maven

一、Maven简介

1. Maven是什么

Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具。

通过pom.xml文件的配置获取jar包,而不用手动去添加jar包。合理叙述项目间的依赖关系。

2. Maven下载安装

(1)下载:下载地址

(2)安装:直接解压就可以

(3)目录结构:

  • bin:包含了Maven的运行脚本文件

  • boot:Maven的依赖的类加载器

  • conf:Maven的全局配置文件(settings.xml),定制Maven的运行行为。把C:\Users\64434.m2\repository作为本地仓库的路径,可以通过核心配置文件来改。

  • lib:依赖jar包

(4)maven环境变量配置

配置的目的:想要在任何地方都能够运行mvn命令

配置两个:一个Home 一个home/bin

打开命令行输入mvn -v 查看结果

二、Maven使用

1. Maven规定了一套默认的项目格式

  • src/main/java :存放项目的.java文件
  • src/main/resources :存放项目资源文件,如spring、struts2配置文件,db.properties
  • src/main/webapp :存放jsp,css,image等文件
  • src/test/java :存放所有测试.java文件,如JUnit测试类
  • src/test/resources :测试资源文件
  • pom.xml :主要要写的maven配置文件
  • target :项目由maven自动输出位置

2. 创建第一个Maven项目

确保 idea 安装了Maven插件

Jar包的坐标:组织、项目、版本

创建Maven工程,修改Maven为自己下的版本,添加Maven依赖jar包

3. Maven仓库

Maven所有的Jar包都是放到maven仓库当中,在项目当中是对仓库jar包的引用。

Maven仓库分类

① 本地仓库:本地存放jar的目录

② 私服:私人搭建的服务器,一般在企业内部局域网使用

③ 中央仓库:Maven内置了一个远程仓库的地址,它就是中央仓库

Maven找jar包的过程

Maven查找引入jar包时,会先到本地仓库当中查找,没有找到现到私服中找,也没有就去到远程中央仓库查找。

找到后会下载到本地仓库,下次就不用到远程仓库了。

最终都会把jar包下载到本地仓库,Maven工程最终引用的都是本地的jar包。

设置本地仓库目录地址

默认本地仓库:C:\Users\用户名\.m2

修改本地仓库:

① 把maven安装目录config中setting.xml复制一份到.m2文件夹下

② 打开setting.xml修改本地仓库地址

打开 localRepository 注释,修改地址

<!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
<localRepository>D:\Program File\程序员\MavenRepository</localRepository>

阿里云镜像

在 setting.xml 中的 mirrors 标签下添加

<mirror>
    <id>alimaven</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

三、Maven常用命令

① validate:确保当前配置和 POM 的内容是有效的

② clean:删除target目录下及其目录下的所有内容

③ compile:将java文件编译成二进制放到target目录当中

④ test:运行测试用例

⑤ package:打包工程

⑥ install:把maven打成的包发布到本地仓库当中

后一个执行时, 前面命令都会执行

命令

四、Maven作用范围

1. scope

(1)compile :默认值,他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。

(2)test :依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit

(3)runtime :表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段.

(4)provided :打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作

(5)system :从参与度来说,和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径

posted @ 2019-10-30 21:03  Lomen~  阅读(726)  评论(0编辑  收藏  举报