Maven基础

1. 定义

Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

2. 作用

1. 依赖管理

即:maven工程对jar包的管理过程。

传统web项目,我们必须将工程所依赖的jar包复制到工程中,导致工程变得很大;

maven工程中不直接将jar包导入到工程中,而是通过在pom.xml文件中添加所需jar包的坐标,在需要用到jar包的时候,只要查找pom.xml文件,再通过pom.xml文件中的坐标,到一个专门用于“存放jar包的仓库”中根据坐标从而找到这些jar包,再把这些包拿去运行。

2. 项目的一键构建

指的是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理,这个过程称为构建。

一键构建指的是整个构建过程,使用 maven 一个命令可以轻松完成整个工作。

3. 使用

1. 安装

通过Maven官网进行下载,具体下载版本如下:

1) bin代表二进制class文件(由java文件编译而成),src代表源码(java源码),源码source比binary大一些,一般正常使用下载bin类型即可,如果要学习源码下载src类型。

2) .tar.gz是linux的压缩包,.zip是windows的压缩包

bin.tar.gz是适用于linux、MacOsX系统的二进制文件

bin.zip是适用于windows的二进制文件

src.tar.gz是linux下的源码

src.zip是windows的源码

只需在windows正常使用maven时,下载第二个:

maven下载


Maven 下载后,将 Maven 解压到一个没有中文没有空格的路径下;

bin:存放了maven的命令

boot:存放了一些maven本身的引导程序,如类加载器

conf:存放了maven的一些配置文件,如setting.xml

lib:存放了maven本身运行所需要的jar包

环境变量配置

1)新增变量 MAVEN_HOME ,变量值就是你的 maven 安装的路径

2)配置变量Path,将%MAVEN_HOME%\bin追加到Path变量中

注意:maven需要电脑上首先安装java环境,JDK1.7+版本

测试;打开命令窗口,输入:mvn -v,显示版本信息即安装完成 

2. Maven仓库

本地仓库 :用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,优先从本地仓库查找;

远程仓库(私服):如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载;

中央仓库 :在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包含了世界上大部分流行的开源项目构件;

在 MAVE_HOME/conf/settings.xml 文件中配置本地仓库位置,将localRepository标签中的内容调整为本地仓库地址,即:<localRepository>D:\my_java\maven_repository</localRepository>

国内从中央仓库下载文件速度非常慢,可以使用阿里云镜像,即在mirrors中配置:

<mirror>

    <id>alimaven</id>

    <name>aliyun maven</name>

    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

    <mirrorOf>central</mirrorOf>

</mirror>

3. Maven工程

一个 maven 工程,它的 src 目录和 pom.xml 是必备的

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

src/main/resources —— 存放项目资源文件,如 spring, hibernate 配置文件

src/test/java —— 存放所有单元测试.java 文件,如 JUnit 测试类

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

src/main/webapp —— 页面资源, js、css、图片等(web项目)

target —— 项目输出位置,编译后的 class 文件会输出到此目录

pom.xml——maven 项目核心配置文件

4. Maven常用命令

1)mvn compile:编译命令,作用是将src/main/java文件夹下的文件编译为class文件输出到target目录下

2)mvn clean:清理命令,执行clean会删除target目录及内容

3)mvn test:测试命令,会执行src/test/java文件夹下的单元测试类

4)mvn package:打包命令,对于java工程执行package打包程jar包,对于web工程打包程war包

5)mvn install:安装命令,执行install命令将maven打成jar包或者war包发布到本地仓库

当后面的命令执行时,前面的操作过程也都会自动执行。

5. Maven指令的生命周期

maven 对项目构建过程分为三套相互独立的生命周期

清理生命周期:clean,在进行真正的构建之前进行一些清理工作

默认生命周期:compile\test\package\install\deploy,构建的核心部分

站点生命周期:生成项目报告,站点,发布站点

6. Maven概念模型

Maven 包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

Maven概念模型

1. 项目对象模型 (Project Object Model)

一个maven工程都有一个pom.xml文件,xml文件包含:

项目自身信息

项目运行所依赖的jar包信息

项目运行环境,如:jdk、tomcat等

2. 依赖管理系统(Dependency Management System)

项目对象模型中的项目运行所依赖的jar包的管理独立出来叫依赖管理模型

通过maven的依赖管理对项目所依赖的jar包进行统一管理

<dependency>

    <groupId>javax.servlet.jsp</groupId>

    <artifactId>jsp-api</artifactId>

    <version>2.0</version>

</dependency>

jar包的坐标有三部分组成:

1)公司组织的名称(groupId),如:javax.servlet.jsp

2)项目名(artifactId),如:jsp-api

3)版本号(version),如:2.0

3. 一个项目生命周期(Project Lifecycle)

使用 maven 完成项目的构建,项目构建包括:

清理生命周期:清理(clean)

默认生命周期:编译(compile)、测试(test)、打包(package)、安装(install)、部署(deploy)

每一个构建项目的命令都对应了maven底层的一个插件

4. 一组标准集合

maven 将整个项目管理过程定义一组标准,比如:通过 maven 构建工程有标准的目录结构,有标准的生命周期阶段、依赖管理有标准的坐标定义等

5. 插件(plugin)目标(goal)

maven 管理项目生命周期过程的那些命令都是基于底层插件完成的

4. idea开发maven项目

1. idea的maven配置

通过File-Settings配置maven,直接搜索找到maven对应的配置项内容

1)Maven home directory:指定本地maven安装目录

2)User settings file:指定setting配置文件路径,即MAVEN_HOME\conf\settings.xml

3)Local resposityory:自动根据配置文件路径检测本地仓库路径

配置项:Maven-Runner

VM Options:-DarchetypeCatalog=internal -Dfile.encoding=GB2312(防止中文乱码)

使用maven骨架创建maven工程时,需要远程下载所需的插件,为方便我们在不联网状态下创建maven工程,配置VM Options参数,只要之前我们联网下载过相关创建工程的插件,就会直接从本地找到对应插件,而不用再去网络下载

2. 使用骨架创建maven的java工程

1)通过:New Project-Maven创建

2)勾选:Create from archetype选择框,从idea提供的骨架中选择quickstart,快速创建工程

3)项目名称:名称

     项目目录:目录

     单位名称(GroupId):

     项目名称(ArtifactId):

     版本号(Version):

4)再次确认Maven home directory(Maven安装目录)、User settings file(配置文件目录)、Local respository(本地仓库)

点击完成,即可完成创建,第一次创建会很慢,要下载依赖的插件

目录结构:

目录结构

3. 不使用骨架创建maven的java工程

类似使用骨架创建,只是在第二步的时候,不勾选Create from archetype选择框

建议不适用骨架创建,目录结构相对完整

4. 使用骨架创建maven的web工程

参照使用骨架创建项目,在第二步的时候,选择的骨架为webapp,其他操作没有区别

目录结构不完整,需要自己补充完整

1)创建对应目录:src/main/java 通过右键-Mark Directory as 属性,设置为:Sources Root

2)创建对应目录:src/main/resources 通过右键-Mark Directory as 属性,设置为:Resources Root

3)创建对应目录:src/test/java 通过右键-Mark Directory as 属性,设置为:Test Sources Root

4)创建对应目录:src/test/resources 通过右键-Mark Directory as 属性,设置为:Test Resources Root

补充完整的web目录结构

默认只有在webapp下面才能创建jsp文件,可以通过:File-Project Structure-Project Settings-Modules进行配置修改

选中当前项目对应的Web,在Web Resource Directories中,增加/删除要创建jsp文件的目录

5. 导入项目依赖的jar包

1. 格式

在 pom.xml 文件添加坐标,可以通过idea的提示功能完成坐标的添加,如:

<dependencies>

    <dependency>

        <groupId>junit</groupId>

        <artifactId>junit</artifactId>

        <version>4.11</version>

        <scope>test</scope>

    </dependency>

    <dependency>

        <groupId>javax.servlet</groupId>

        <artifactId>servlet-api</artifactId>

        <version>2.5</version>

        <scope>provided</scope>

    </dependency>

</dependencies>

2. 坐标的来源方式

通过搜索maven中央仓库,找到对应的jar包,把坐标拷贝到pom.xml文件

3. 依赖范围

1)compile:编译范围,指 A 在编译时依赖 B,此范围为默认依赖范围,编译范围的依赖会用在

编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包

2)provided:provided 依赖只有在当 JDK 或者一个容器已提供该依赖之后才使用, provided 依

赖在编译和测试时需要,在运行时不需要,比如:servlet api、jsp api 被 tomcat 容器提供

3)runtime:runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要,比如:jdbc

的驱动包,由于运行时需要所以 runtime 范围的依赖会被打包

4)test:test 范围依赖 在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用,

比如:junit,由于运行时不需要所以 test范围依赖不会被打包

5)system:system 范围依赖与 provided 类似,但是你必须显式的提供一个对于本地系统中 JAR

文件的路径,需要指定 systemPath 磁盘路径,system依赖不推荐使用

6.工程运行环境修改

1)添加tomcat7插件 

tomcat7插件配置

2)添加jdk插件

JDK配置

通过File-Settings-Live Template自定义模板

1)进入Live Template目录

2)添加自定义Template Group:custom

3)添加Live Template,比如本例中的tomcat7插件

4)设置自定义模板的缩写(Abbreviation):tomcat7

5)设置自定义模板内容(Template text):上图配置的插件内容

6)定义模板适用范围:一般用于xml文件

7)使用:直接在xml文件中输入tomcat7,即可将模板内容写入配置文件

7.  pom 基本配置

pom.xml 是 Maven 项目的核心配置文件,位于每个工程的根目录,基本配置如下:

<project>:文件的根节点

<modelVersion>:pom.xml 使用的对象模型版本

<groupId>:项目名称,一般写项目的域名

<artifactId>:模块名称,子项目名或模块名称

<version>:产品的版本号,snapshot 为快照版本即非正式版本,release 为正式发布版本

<packaging>:打包类型

    jar:执行 package 会打成 jar 包

    war:执行 package 会打成 war 包

    pom:用于 maven 工程的继承,通常父工程设置为 pom

<name>:项目的显示名,常用于 Maven 生成的文档

<description>:项目描述,常用于 Maven 生成的文档

<dependencies>:项目依赖构件配置,配置项目依赖构件的坐标

<build>:项目构建配置,配置编译、运行插件等

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。