[Maven实战](7)坐标
在maven为这些构件引入坐标概念之前,我们无法使用不论什么一种方式来唯一标识全部这些构件。
因此,当须要用到Spring Framework依赖的时候。我们通常会去Spring Framework官网寻找;当用到log4j依赖的时候。我们又会去Apache官网去寻找。这样,我们花费了大量的时间在搜索。浏览网页上。
反复的搜索,浏览网页和下载jar文件。这应该交给机器去完毕。机器工作必须基于提前定义的规则。
如今。仅仅要我们提供正确的坐标元素,maven就能找到相应的构件。比方说,当须要使用java5平台上TestNG的5.8版本号时,就告诉maven:"groupId=org.testing;artifactId=testing;version=5.8;classifier=jdk15"。maven就会从仓库中寻找相应的构件供我们使用。或许你会奇怪。maven是从哪里下载构件的呢?答案非常easy,maven内置了一个中央仓库的地址(http://repo.maven.org/maven2),该中央仓库包括了世界上大部分流行的开源项目构件。maven会在须要的时候去那里下载。
<groupId>com.sjf.mavendemo</groupId><artifactId>maven-hello-world</artifactId><version>1.0.0SNAPSHOT</version><packaging>jar</packaging>
- groupId : 定义当前maven项目隶属的实际项目。首先。maven项目和实际项目不一定是一对一的关系。比方SpringFramework这一实际项目,其相应的maven项目会有非常多,如: spring-core,spring-context等。
这是因为maven中模块的概念,因此,一个实际项目往往会被划分成非常多模块。其次。groupId不应该相应项目隶属的组织或公司。原因非常easy。一个组织下会有非常多个实际项目,假设groupId仅仅定义到组织级别,而后面我们会看到。artifactId仅仅能定义maven项目(模块),那么实际项目这个层将难以定义。最后。groupId的表示方式与java包名的表示方式类似,通常与域名反向一一相应。
- artifactId : 该元素定义实际项目中的一个maven项目(模块),推荐的做法是使用实际项目名称作为artifactId前缀。
比方上面实例中的artifactId是mavendemo-hello-world。使用了实际项目名mavendemo作为前缀,这样做的优点是方便寻找实际构件。
在默认情况下,maven生成的构件。其文件名称会以artifactId作为开头。如:mavendemo-hello-world-1.0.0.jar。使用实际项目名称作为前缀之后,就能方便从一个lib目录中找到某个项目的一组构件。
- version : 该元素定义maven项目当前所处的版本号,如:mavendemo-hello-world-1.0.0.jar的版本号是1.0.0。
须要注意的是,maven定义了一套完整的版本号规范,以及快照(SNAPSHOT)的概念。
- packaging : 该元素定义maven项目的打包方式。首先,打包方式通常与所生成构件的文件扩展名相应,如:mavendemo-hello-world.1.0.0.jar的packaging为jar。而使用war打包方式的maven项目。终于生成的构件会有一个.war文件,只是这不是绝对的。
其次。打包方式会影响到构建的生命周期,比方jar打包和war打包会使用不同的命令。
最后。当不定义packaging的时候。maven会使用默认值jar。
- classifier : 该元素用来帮助定义构建输出的一些附属构件。
附属构件与主构件相应,如上例中的主构件是: mavendemo-hello-world-1.0.0.jar,该项目可能还会通过使用一些插件生成如:mavendemo-hello-world-1.0.0-javadoc.jar、mavendemo-hello-world-1.0.0-sources.jar这样一些附属构件,其包括了java文档和源码。
这时候,javadoc和sources就是这两个附属构件的classifier。这样。附属构件也就拥有了自己唯一的坐标。
[Maven实战](7)坐标的更多相关文章
- Maven实战06_坐标和邮件服务模块
1:何为Maven坐标 为了能够自动化地解析任何一个Java构件,Maven就必须要将其唯一标识,这就是依赖管理的底层基础--坐标. 学过数学的人都知道平面直角坐标系,x,y分别为其横,纵坐标,将会在 ...
- Maven实战(六)依赖
我们项目中用到的jar包可以通过依赖的方式引入,构建项目的时候从Maven仓库下载即可. 1. 依赖配置 依赖可以声明如下: <project> ... <dependenci ...
- Maven实战之Quick Start
Introduction Maven是一个异常强大的构建工具,能够帮我们自动化构建过程,从清理.编译.测试到生成报告,再到打包和部署.通过Maven,我们只需要输入简单的命令(如mvn clean i ...
- Maven实战五
转载:http://www.iteye.com/topic/1123232 我们项目中用到的jar包可以通过依赖的方式引入,构建项目的时候从Maven仓库下载即可. 1. 依赖配置 依赖可以声明 ...
- (转)Maven实战(六)依赖
我们项目中用到的jar包可以通过依赖的方式引入,构建项目的时候从Maven仓库下载即可. 1. 依赖配置 依赖可以声明如下: <project> ... <dependenci ...
- 读书笔记-《Maven实战》-2018/4/17
第五章 坐标和依赖 1.如同笛卡尔坐标系一样,Maven也通过坐标三元素定位一个资源. <groupId>com.dengchengchao.test</groupId> &l ...
- Maven实战系列文章目录
Maven实战(一)安装与配置 Maven实战(二)构建简单Maven项目 Maven实战(三)Eclipse构建Maven项目 Maven实战(四)生命周期 Maven实战(五)坐标详解 Maven ...
- maven实战系列
Maven实战(一)安装和配置 Maven实战(二)构建简单Maven项目 Maven实战(三)Eclipse构建Maven项目 Maven实战(四)生命周期 Maven实战(五)坐标详解 Maven ...
- 《Maven实战》
原创作者: 许晓斌 阅读:61148次 评论:19条 更新时间:2011-06-23 你是否早已厌倦了日复一日的手工构建工作?你是否对各个项目风格迥异的构建系统感到恐惧?Maven ...
随机推荐
- C++中模板template <typename T>
最近在看C++的源码,遇到了不少问题,一点一点进行补充. 首先就是遇到template <typename Dtype>. 网上解释的非常多,觉得比较啰嗦,其实就是一个类型模板. 比如我们 ...
- JavaScript sort() 方法详解
定义和用法 sort() 方法用于对数组的元素进行排序. 语法 arrayObject.sort(sortby) 参数 描述 sortby 可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注 ...
- Webpack 入门教程
Webpack 是一个前端资源加载/打包工具.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源. 本章节基于 Webpack3.0 测试通过. 从图中我们可以看出,W ...
- Thinkphp5 模型 验证器执行顺序问题
Thinkphp5把模型的验证规则归为一个验证器,这种做法,不知到符不符合大家的心意,反正楼主是比较不爽的 楼主更倾向于tp3.2的验证规则直接写在模型里面,毕竟你的验证规则一般而言是针对模型来验证的 ...
- Ajax之路
第一部分: Ajax全称Asynchronous Javascript and XML,中文意思为"异步的Javascript 和XML".Ajax这组技术是web2.0的核心之一 ...
- Vue Elementui 如何让输入框每次自动聚焦
在项目优化中碰到一个小问题,在每次提示框显示的时候让提示框中的输入框聚焦.如下图.一般情况下提示框是隐藏的.点击了编辑才会弹出. 那么原生属性autofocus 只在模板加载完成时起作用,也就是说只有 ...
- python 小白(无编程基础,无计算机基础)的开发之路 辅助知识1 with...as
这个语法是用来代替传统的try...finally语法的. with EXPRESSION [ as VARIABLE] WITH-BLOCK 基本思想是with所求值的对象必须有一个__enter_ ...
- C#里调用 MysqlDB
最近在做项目,发现在使用Mysql提供给C#操作的类不是和好用,就想办法写了一个操作方便的Mysql数据层类. 比如以前在执 行一个查询 代码 ...
- [转载] 2 分钟读懂大数据框架 Hadoop 和 Spark 的异同
转载自https://www.oschina.net/news/73939/hadoop-spark-%20difference 谈到大数据,相信大家对Hadoop和Apache Spark这两个名字 ...
- python之socket模块
UDP client #!/usr/bin/env python2.7 #-*-coding:utf-8 -*- import socket s=socket.socket(socket.AF_INE ...