一、Maven的基本概念

  Maven(翻译为"专家","内行")是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。

  1.项目构建

  项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。理想的项目构建是高度自动化,跨平台,可重用的组件,标准化的,使用maven就可以帮我们完成上述所说的项目构建过程。

  2.依赖管理

  3.使用Maven的好处

  1) Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下,这些目录都有明确的约定。

  2) Maven的每一个动作都拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程

  3) 只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮我们处理其他事情。 

  4) 使用Maven可以进行项目高度自动化构建,依赖管理(这是使用Maven最大的好处),仓库管理。

二、Maven的简单使用

  1.Maven项目的目录约定

  |----src
    | |----main
      | | |----java ——存放项目的.java文件
      | | |----resources ——存放项目资源文件,如spring, hibernate配置文件
    | |----test
      | | |----java ——存放所有测试.java文件,如JUnit测试类
      | | |----resources ——存放项目资源文件,如spring, hibernate配置文件
  |----target ——项目输出位置
  |----pom.xml ----用于标识该项目是一个Maven项目

  2.Pom.xml配置

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!--所有的Maven项目都必须配置这四个配置项-->
<modelVersion>4.0.0</modelVersion>
<!--groupId指的是项目名的项目组,默认就是包名-->
<groupId>com.dongnao.jack</groupId>
<!--artifactId指的是项目中的某一个模块,默认命名方式是"项目名-模块名"-->
<artifactId>mavenProjeck</artifactId>
<!--version指的是版本,这里使用的是Maven的快照版本-->
<version>SNAPSHOT-0.0.1</version> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>compile/test/provided/runtime</scope>
</dependency>
</dependencies>
</project>

  3.maven命令

  mvn compile

  mvn test

  mvn package:一条龙服务,包括编译、测试、打包。但是并没有把包同步到仓库

  mvn install:一条龙服务,包括编译、测试、打包。并且把包同步到仓库

  mvn clean 

三、maven的概念模型

  

四、Maven的仓库布局

  根据maven坐标定义每个构建在仓库中唯一存储路径

    路径为:groupId/ artifactId/version/ artifactId-version.packaging

    http://search.maven.org  从中央仓库中搜索jar包

  创库分类

    本地仓库,默认在/.m2/repository/,每个用户只有一个本地仓库

    远程仓库

    中央仓库:http://repo1.maven.org/maven2   central

    私服:是一种特殊的远程仓库,架设在局域网内的仓库

    镜像:用来替代中央仓库,速度一般都比中央仓库快。 Mirror,一般都是国内,例如:阿里的maven镜像

五、Maven三大生命周期

  生命周期Maven有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:

  1) Clean在进行真正的构建之前进行一些清理工作。

  2) Default构建的核心部分,编译,测试,打包,部署等等。

  3) Site生成项目报告,站点,发布站点。

六、Maven坐标

  Maven坐标主要组成:

  • groupId:定义maven的项目,可以用包名
  • artifactId:定义项目中的一个模块,一般都是工程名
  • version:版本
  • packaging:定义打包方式

  坐标的作用:用来唯一标识一个构件,在依赖里面根据坐标来找需要的构件。

七、Maven依赖

  根据maven坐标找依赖的构件

  dependency依赖中scope范围

  1.compile: 默认编译依赖范围。对于编译,测试,运行三种classpath都有效。

  2.test:测试依赖范围。只对于测试classpath有效,只对测试代码有效

  3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api,打包的时候这个包不会打进去

  4.runtime:运行时提供。例如:jdbc驱动

  Compile、runtime打包会打进去,test、provided打包不会打进去。

  依赖冲突解决:

1.路径最近者优先   CBA,C依赖B,B依赖A,会先用B的jar包

     2.路径相同,第一声明者优先:CB,CA,必须看B,A在C中哪一个先声明

八、Maven聚合和继承

主要是可以起到公共配置文件的抽取作用,jar包的统一管理

注意:

    1.dependencyManagement中定义的依赖子module不会共享

    2.dependencies中定义的依赖子module可以共享

    3、jar包的统一管理,把jar抽取到parent中

   继承:

  <parent>

    <groupId>com.sz.buss</groupId>

    <artifactId>parent</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <relativePath>../parent</relativePath>

  </parent>

  聚合:

  <modules>

    <module>hello1Maven</module>

    <module>maven1</module>

  </modules>

九、Maven web项目

  自动部署到tomcat下面并运行

<build>
<finalName>web</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.2.3</version>
<configuration>
<container>
<containerId>tomcat5x</containerId>
<home>D:/Program Files/Apache Software Foundation/Tomcat 5.0</home>
</container>
<configuration>
<type>existing</type>
<home>D:/Program Files/Apache Software Foundation/Tomcat 5.0</home>
</configuration>
</configuration>
<executions>
<execution>
<id>cargo-run</id>
<phase>install</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

Maven(一)-- 基础知识的更多相关文章

  1. maven基本基础知识及命令学习-1

    Maven概述:Maven是很有效的项目管理工具,maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目构建.报告和文档的软件项目管理工具.统一管理环境,架包等. 一 maven下载 ...

  2. maven基础知识

    1.maven基础知识 1.1maven坐标 maven坐标通常用冒号作为分割符来书写,像这样的格式:groupId:artifactId:packaging:version.项目包含了junit3. ...

  3. Maven基础知识详解

    1. 简介   Maven在Java领域的应用已经非常广泛了,有了Maven的存在是的开发人员在搭建.依赖.扩展和打包项目上变得非常简单. 2. Windows安装Maven 下载安装包   http ...

  4. selenium自动化基础知识

    什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...

  5. Shiro入门这篇就够了【Shiro的基础知识、回顾URL拦截】

    前言 本文主要讲解的知识点有以下: 权限管理的基础知识 模型 粗粒度和细粒度的概念 回顾URL拦截的实现 Shiro的介绍与简单入门 一.Shiro基础知识 在学习Shiro这个框架之前,首先我们要先 ...

  6. Hibernate入门1. Hibernate基础知识入门

    Hibernate入门1. Hibernate基础知识入门 20131127 前言: 之前学习过Spring框架的知识,但是不要以为自己就可以说掌握了Spring框架了.这样一个庞大的Spring架构 ...

  7. RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙

    消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...

  8. Spring笔记01(基础知识)

    1.基础知识 01.Spring:轻量级Java EE开源框架,它是由Rod Johnson为了解决企业应用程序开发的复杂性而创建. 02.目标:实现一个全方位的整合框架,实现“一站式”的企业应用开发 ...

  9. 走进JavaWeb技术世界1:JavaWeb的由来和基础知识

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  10. Shiro框架 - 【shiro基础知识】

     转载:https://segmentfault.com/a/1190000013875092#articleHeader27  读完需要 63 分钟   前言 本文主要讲解的知识点有以下: 权限管理 ...

随机推荐

  1. 使用Eclipse创建的第一个javabean,cannot resolved to a type

    第一个原因是我没有把eclipse编译好的class文件放在项目的build文件夹中的(我创建的是dynamic web project),你要把/build/classes/文件夹给合并到WebCo ...

  2. windows下好用的markdown编辑器

    Markdown是一种用来写作的轻量级[标记语言],它用简洁的语法代替了排版.字体设置,使我们可以专心写作,目前被越来越多的开发者,写作爱好者使用.Markdown的语法十分简单,常用的标记不超过十个 ...

  3. netty5入门教程

    1.Netty是什么? 本质:JBoss做的一个Jar包 目的:快速开发高性能.高可靠性的网络服务器和客户端程序 优点:提供异步的.事件驱动的网络应用程序框架和工具 通俗的说:一个好使的处理Socke ...

  4. PostMessage与PostThreadMessage的差别

    消息队列是属于线程的,Post消息就是把消息放到目标线程的消息队列中. 这两者的差别在于: PostMessage 通过指定目标窗体句柄来确定目标线程,通常情况下由窗体过程来处理消息: PostThr ...

  5. (转)windows环境vue+webpack项目搭建

    首先,vue.js是一种前端框架,一般利用vue创建项目是要搭配webpack项目构建工具的,而webpack在执行打包压缩的时候是依赖node.js的环境的,所以,要进行vue项目的开发,我们首先要 ...

  6. HTML文档的经常使用标记

    一.HTML文档中经常使用的标记有文字标记.段落标记.列表标记.超链接标记.图像标记.表格标记.框架标记和多媒体标记,以下对这些经常使用标记进行介绍: 1.文字标记:文字是网页重要的组成部分之中的一个 ...

  7. sqlserver查询最接近的记录

    select top 1 SEX,ACTIVE ,HEIGHT,WEIGHT,HOT,CARBON,PROTEIN,FAT,sodium from standard where sex='0'and ...

  8. laravel bald视图控制流与子视图

    1:laravel 视图控制流的写法 假设控制器代码如下 $data = [ 0 => '张三', 1 => '李四', 2 => '王五' ]; return view('test ...

  9. 空间管理 您的位置: 51Testing软件测试网 » lilisx2006的个人空间 » 日志 在一个没有测试经理的小公司如何做好测试

    如何在一个没有测试经理的小公司做好测试? 首先,没有测试经理意味着测试人员没有最直接的管理者,往往这种时候的管理者是开发经理或技术总监,但他们何其忙耶?同时,在无人监管的情况下,测试是一个很容易偷懒的 ...

  10. html5 websocket + node.js 实现网页聊天室

    1 client:    socket.io server:   node.js +  express  + socket.io 一个简单的聊天室  demo,没有注册,内置了一些测试用户 2 cli ...