Maven 基本的认识

1. 什么是Maven?

在平时开发中,经常遇到某个jar包,我在代码层已经Import 和@Automation了,编译器还是提醒你某个jar包找不到,往往这时来个mvn install 问题就解决了。可想而知,Maven 是帮助我们开发者管理Jar包的工具

2. Maven基本命令

2.1 代码的编译

 mvn compile

同样的,这里把项目jar代码编译成.class文件到项目的target文件夹

2.2 安装包

mvn install 

编译好的.class文件,maven 自动地安装到本地Repository,即maven 的仓库。为什么要安装到仓库,这样的作用是什么?

  • 方便Maven工具快速找到相关的jar 包,引入项目里
  • 集中管理项目的jar包

2.3 清理目标文件

mvn clean 

maven 只对项目中的target 中的文件清理,原先的安装的文件不受影响。

3. Maven POM

3.1 什么是POM?

POM代表项目对象模型。它是 Maven 中工作的基本单位,这是一个 XML 文件。它始终保存在该项目基本目录中的 pom.xml 文件。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                           http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.lollipop.api</groupId>
 <artifactId>ali</artifactId>
 <version>1.0-SNAPSHOT</version>
</project>

3.2 POM中装包类型

  • 装包的属性
     <packaging></packaging>
  • 装包类型
  1. pom 类型,所有的父级项目的packaging都为pom
  2. jar 类型,默认是jar类型,如果不作配置,maven会将该项目打成jar包,作为内部调用或者是作服务使用
  3. war 类型,如果是需要部署的项目,则需要打包成war类型

    每个pom.xml 文件必需有project 、groupId、artifactId、version。

    | 元素 | 说明 |

    |:-------:|:----:|

    | project | 项目根目录 |

    | groupId | 公司或组织域倒序+项目 |

    | artifactId | 模块名称 |

    | version | 模块版本号 |

4. Maven 依赖

4.1依赖的范围

4.1.1 范围标签
<dependencies>
   <dependency>
      <groupId>xxx.xx.x</groupId>
      <artifactId>xxx</artifactId>
      <version>4.0</version>
      <scop>xxx</scop> #范围标签
   </dependency>
</dependencies>
4.1.2 范围标签作用域值
  1. compile 范围依赖

    • 对程序编译和打包期,该作用域有效
  2. test 范围依赖
    • 对测试程序编译和运行期,该作用域有效
  3. procided 范围依赖
    • 除打包和部署期无效后,其他期都有效

4.2 依赖的继承

在项目里,如果多个子模块需要用到同个依赖包,我们可以提取它们到父 POM,子POM仅仅简单的引用

父pom.xml

<project>
   ...
  <dependencyManagement>
   <dependencies>
    <dependency>
      <groupId>group-a</groupId>
      <artifactId>artifact-a</artifactId>
      <version>1.0</version>

      <exclusions>
      <exclusion>
      <groupId>group-c</groupId>
      <artifactId>excluded-artifact</artifactId>
      </exclusion>
      </exclusions>

  </dependency>

  <dependency>
      <groupId>group-c</groupId>
      <artifactId>artifact-b</artifactId>
      <version>1.0</version>
      <type>war</type>
      <scope>runtime</scope>
  </dependency>

  <dependency>
      <groupId>group-a</groupId>
      <artifactId>artifact-b</artifactId>
      <version>1.0</version>
      <type>bar</type>
      <scope>runtime</scope>
  </dependency>
  </dependencies>
 </dependencyManagement>
</project>

子pom.xml

  <project>
     ...
  <dependencies>
      <dependency>
          <groupId>group-c</groupId>
          <artifactId>artifact-b</artifactId>
          <!-- This is not a jar dependency, so we must specify type. -->
          <type>war</type>
      </dependency>

      <dependency>
          <groupId>group-a</groupId>
          <artifactId>artifact-b</artifactId>
          <!-- This is not a jar dependency, so we must specify type. -->
          <type>bar</type>
      </dependency>
  </dependencies>
  </project>

4.3 规范依赖版号

这里就不详细说明了。主要在父级pom里头加入版本号,子级pom简单引入就可以了

有很多地方说的不好,可以去Maven官网看文档, 建议多动手熟悉Maven的知识

Maven 基本的认识的更多相关文章

  1. 【分享】标准springMVC+mybatis项目maven搭建最精简教程

    文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...

  2. 理解Maven中的SNAPSHOT版本和正式版本

    Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...

  3. 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo

    Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...

  4. 安装eclipse的maven插件

    我们团队用maven来管理项目需要的库文件,其实以前都没听过maven,第一次接触这个,师兄要我直接去装下这个,开始以为还挺简单的,没想到中间遇到了一些小麻烦,现在把我成功安装maven的过程分享下, ...

  5. MAVEN学习-第一个Maven项目的构建

    MAVEN安装成功之后就可以进行项目的构建和管理了: 为什么要用maven进行项目的构建和管理? 对于初学者来说一个最直接的也是最容易里的优点在于JAR包的管理,相对于以前开发一个项目的时候我们需要用 ...

  6. Maven 代理设置

    在maven的安装目录下 %MAVEN_HOME%/conf/setting.xml 中进行设置 <proxies>    <!-- proxy     | Specificatio ...

  7. spring maven pom.xml设置

    spring pom.xml设置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...

  8. maven依赖查询地址

    http://search.maven.org/#search%7Cga%7C1%7C

  9. maven 中snapshot版本和release版本的区别

    maven中的仓库分为两种,snapshot快照仓库和release发布仓库.snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本.定义一个组件/模 ...

  10. Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题

    现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...

随机推荐

  1. hyper-v 安装Centos及网络配置

    新安装的Centos系统默认情况下是不能上网的,需要经过相应的配置:选择对应的虚拟机,点击"虚拟交换机管理器": 设置hyper-v上的网络及分配cpu.内存.磁盘等资源. 安装C ...

  2. MySQL提示“too many connections”的解决办法

    今天生产服务器上的MySQL出现了一个不算太陌生的错误"Too many connections".平常碰到这个问题,我基本上是修改/etc/my.cnf的max_connecti ...

  3. JAVA线程池shutdown和shutdownNow的区别

    一.区别介绍 shutDown()  当线程池调用该方法时,线程池的状态则立刻变成SHUTDOWN状态.此时,则不能再往线程池中添加任何任务,否则将会抛出RejectedExecutionExcept ...

  4. Java bean和json互转时,屏蔽某个属性

    有的时候我们把java bean 转换成json的时候,希望屏蔽掉某个属性,这时可以在java bean的属性上加上@JsonIgnore注解,在com.fasterxml.jackson.annot ...

  5. linux设备驱动之字符设备驱动模型(1)

    一:字符设备驱动 在linux下面,应用层看到的一切皆为文件(名字)所有的设备都是文件,都可以调用open,read,write来操作,而在内核中每个中每个设备有唯一的对应一个设备号: APP   ( ...

  6. SSM-SpringMVC-17:SpringMVC中深度剖析HandlerAdapter处理器适配器底层

     ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 先放一张图 很熟悉啊,之前就看过,我们之前已经把handlerMapping剖了个底朝天,顺着上次的进度,继 ...

  7. SSH概念及常用操作汇总

    工作有一段时间了,经常用SSH登录远程机器,但对原理一直不是很了解,所以查阅了一些资料,写个小结. 一. SSH是什么? SSH的全称是Secure Shell, 是一种“用来在不安全的网络上安全地运 ...

  8. nagios监控mysql主机,nginx,磁盘IO,网卡流量

    http://blog.chinaunix.net/uid-28685162-id-3506260.html nagios安装完成,打开/usr/local/nagios/etc/nagios.cfg ...

  9. app后端设计(6)-- LBS

    在LBS的应用中,一个基本的需求是查找附近的用户,现在有两种做法: 1. 使用mysql的空间数据库,具体做法参考:http://blog.sina.com.cn/s/blog_a48af8c0010 ...

  10. GraphicsMagick+im4java实现高质量大图的处理

    http://www.open-open.com/lib/view/open1355754261963.html 做网站往往需要处理各种各样的图片,对于jdk自带的一套图片处理库,他的特点是稳定简单, ...