1.maven基础知识

1.1maven坐标

  • maven坐标通常用冒号作为分割符来书写,像这样的格式:groupId:artifactId:packaging:version。项目包含了junit3.8.1,则包含了对junit:junit:jar:3.8.1的依赖。

groupId

d 团体,公司,小组,组织,项目,或者其他团体。团体标识的约定是,它以创建这个项目的组织名称的逆向域名(reverse domain name)开头。

artifactId

在groupId下的表示一个单独项目的唯一标识符。

version

一个项目的特定版本。

项目打包格式也是maven坐标的重要组成部分,但是他不是项目唯一标识符的一个部分。一个项目的groupId:artifactId:version使之成为一个独一无二的项目;你不能同时有一个同样的groupId,artifactId和version标识的项目。

packaging

项目的类型,默认是jar,描述了项目打包后的输出。类型为jar的项目产生一个jar文件,类型为war的项目产生一个web应用。

1.2maven依赖

  • maven支持传递性依赖(transitive dependencies)。假如你的项目依赖于一个库,而这个库又依赖其他,maven自动加入这些,也可以排除一些特定的传递性依赖。
  • maven中的一个依赖不仅仅是一个jar,他是一个pom(project object model)文件,这个pom可能声明了对其他构建的依赖。
  • maven提供了不同的依赖范围(dependency scope)。simple项目包含了一个依赖:--junit:junit:jar:3.8.1---范围test。当一个依赖的范围是test的时候,说明它在compiler插件运行compile目标的时候是不可用的。它只有在运行compiler:testCompile和surefire:test目标的时候才会被加入到classpath中。
  • 当为项目创建jar文件的时候,它的依赖不会捆绑在生成的构件中,他们只是用来编译。当maven来创建war或jar,你可以配置maven让它在生成的构件中捆绑依赖,也可以用provided范围,让它排除war文件中特定的依赖。provided范围告诉maven一个依赖在编译的时候需要,但是它不应该被捆绑在构件的输出中。当你开发web应用的时候provided范围变得十分有用,你需要Servlet API来编译你的代码,但是你不希望Servlet API的jar文件包含在你的web应用的web-inf/lib目录中。
  • compile(编译范围)
  • compile是默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范围。编译范围依赖在所有的classpath中可用,同时他们也会被打包。
  • provided(已提供范围)
  • provided依赖只有在当jdk或者一个容器已提供该依赖之后才使用。例如,如果你开发了一个web应用,你可能在编译classpath中需要可用的Servlet api;这个servlet api jar由你的应用服务器或者servlet容器提供。已提供范围的依赖在编译classpath(不是运行时)可以用。他们不是传递性的,也不会被打包。
  • runtime(运行时范围)
  • rentime依赖在运行和测试系统的时候需要。但在编译的时候不需要。比如,你可能在编译的时候只需要jdbc api jar,而只有在运行的时候才需要jdbc驱动实现。
  • test(测试范围)
  • test范围依赖在一般的编译和运行时都不需要,他们只有在测试编译和测试运行阶段可用。
  • system(系统范围)
  • system范围依赖与provided类似,但是你必须显示的提供一个对于本地系统中jar文件的路径。这么做事为了允许基于本地对象编译,而这些对象是系统类库的一部分。这样的构件应该是一直可用的,maven也不会在仓库中寻找它。如果你将一个依赖范围设置成系统范围,你必须同时提供一个systemPath元素。这一该范围是不推荐使用的。
 <dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.6</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/poi-ooxml-3.6.jar</systemPath>
</dependency>

maven基础知识的更多相关文章

  1. Maven基础知识详解

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

  2. Maven基础知识和环境搭建

    基本概念和生命周期 Maven是现在流行的构建自动化工具,提供了软件构建过程中全生命周期的管理. 基础目录结构 基础目录结构如下: 根目录:存放pom.xml 和所有的子目录 ${basedir}/s ...

  3. Maven基础知识(转)

    文章摘自http://www.cnblogs.com/xing901022/p/4170248.html 谢谢楼主的总结,界面设计的很好看! 一.什么是Maven Maven是一个用于项目构建的工具, ...

  4. maven基础知识汇总

    maven的dependency中scope=compile和provided的区别 对于scope=compile的情况(默认scope),也就是说这个项目在编译,测试,运行阶段都需要这个artif ...

  5. Maven 基础知识

    Maven MavenMaven 简介 Maven MavenMaven 是 Apache Apache Apache 软件基金会组织维护的 软件基金会组织维护的 软件基金会组织维护的 软件基金会组织 ...

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

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

  7. selenium自动化基础知识

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

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

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

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

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

随机推荐

  1. 微小企业中Sqlserver2000服务器的日常备份与恢复

    1:把数据库和备份分别放在二个硬盘上 2:不要相信用户会使用客户端坚持备份数据,比较靠谱的方法是为数据库建立维护计划 3:数据库采用每天完全备份,并且时间一定要选择在用户肯定开机的时候,因为很多用户晚 ...

  2. 【Win10 UWP】URI Scheme(一):Windows Store协议的解析和使用

    协议是Windows Phone和Windows Store应用的一个重要特点,可以做到在不同应用之间进行互相呼起调用.小小协议,学问大着呢.我打算写几篇关于协议在UWP中使用的文章. 这一讲的主要对 ...

  3. centos 6.5 中设置mysql 5.1.73 主从同步配置过程

    本文章给大家介绍centos 6.5设置mysql主从同步过程记录,希望文章对各位会带来帮助.  涉及到的centos系统均为虚拟机,VM下安装的版本. 在centos 6.5上设置了mysql主从功 ...

  4. Jquery相册插件(开源下载)

    一,导言 上次 “不定义JQuery插件,不要说会JQuery” 的博客写的肤浅,漏洞百出,而且最重要的是从理论上说如何定义一个jQuery插件,没有实质性的写一个jQuery插件出来,这未免是纸上谈 ...

  5. 【译】ISupportInitialize的用处

    [译]ISupportInitialize的用处 注:本文是对How ISupportInitialize Can Help的翻译.原文作者编写了Sharpgl,这篇文章是对制作Winform控件过程 ...

  6. C++ inline函数

    本文主要记录了C++中的inline函数,也就是内联函数,主要记录了以下几个问题: C++为什么引入inline函数? 为什么inline能很好的取代表达式形式的预定义? inline函数的使用场合 ...

  7. 程序员DNS知识指南

    本次内容比较hardcore,非科班出身可能会有理解障碍,可以考虑不用挣扎,直接放弃.毕竟普通驾驶员是不需要理解内燃机原理和曲轴如何做功的,所谓术业有专攻也,能看完的不是同行就是真爱~ 引 DNS对于 ...

  8. PHP标准库 (SPL) 笔记

    简介 SPL是Standard PHP Library(PHP标准库)的缩写. The Standard PHP Library (SPL) is a collection of interfaces ...

  9. salesforce 零基础学习(三十五) 通过Process Builder和Approval Processes锁定记录(Lock Record)

    有的时候我们可能有这样的需求,当某个字段为特定的值情况下,便锁定此条记录,仅允许Profile为System Admin的用户修改或者解锁,其他的用户只能查看此条记录,不能修改此条记录,这种情况下我们 ...

  10. 学习ASP.NET MVC(三)——我的第一个ASP.NET MVC 视图

    今天我将对前一篇文章中的示例进行修改,前一篇文章中并没有用到视图,这次将用到视图.对于前一个示例中的HelloWorldController类进行修改,使用视图模板文件生成HTML响应给浏览器. 一. ...