专栏首页LanceToBigDataMaven(三)在Eclipse中使用Maven与Maven坐标

Maven(三)在Eclipse中使用Maven与Maven坐标

这一篇讲解一下在eclipse中使用maven,在一些高版本的eclipse中是自带maven插件的。所以这里就不在讲解怎么安装插件了。

接下来我们创建一个MavenFirst项目

一、在Eclipse中创建一个MavenFirst项目

  第一步:创建一个Maven工程

  第二步:选择创建java项目——>next

  第三步:填写GAV

  第四步:点击finsh,完成创建

  第五步:创建一个MavenFirst.java

package com.zyh.maven.MavenFirst;

public class MavenFirst {
    public String sayHello(String name){
        return "hello"+name;
    }
}

    位置:

  第六步:使用eclipse的选项执行maven命令

    注意:

      这里的6--9 都是快捷方式

        9 测试,相当于命令行 mvn test

        8 安装,相当于命令行 mvn install  作用:将其上传到本地仓库,具体见上面讲解

        7 关联源码,这个不需要解释吧,平常我们使用别的jar包也关联过源码

          6 清理,mvn clean

             5 maven bulid  执行maven命令,等效 mvn

        4 maven build  5快速的操作

          如果没有操作过,与5相同

          如果操作过一次,将直接执行上一次5的命令

          如果操作多次,将提供选择框

  第七步:当我们执行maven install时,查看文件结构

注意:如果我们的例子是Maven的web项目时,将maven web项目发布到tomcat上运行

  命令:tomcat:run

  通过网址即可访问,同时会将该项目上传到本地仓库。

二、Maven坐标

2.1、什么是坐标 

  关于坐标(Coordinate),大家最熟悉的应该就是数学中的坐标了吧,我印象不是特别深刻,说的数学专业一点叫作平面几何。在一个平面坐标系中,有x轴和y轴,x轴就是横线,y轴就是竖线,坐标(x,y)表示这个点距离x轴为y,距离y轴为x的一点,任何一个坐标都能唯一标识该平面中的一点。

  在实际的生活中,我们可以将地址看成是一种坐标。不同的省,不同的市,不同的区,不同的街道等一系列信息标识了每一个不同的地址。在深圳经常吃外卖的人应该是有体会的,送外卖的小哥都会根据你填写的地址将外卖送给你,而你填的地址就标识了唯一的一个地址。

    坐标就好比每一个Java构件的身份证一样。Maven的世界是拥有非常多的Java构件的,可能是jar、可能是war、也可能是其他的一些东西。假如Maven中没有坐标的概念,我们是无法来区分这些构件的,所以我们要唯一标识每一个构件。

  不然就和传统的手工方式一样,你需要spring就去spring下载spring的包,需要mysql又去mysql下载mysql的包,没有统一的规范又怎么能够自动化的去依赖这些构件。

    Maven便给我们制定了一套规则那就是使用坐标进行唯一标识。Maven的坐标元素包括groupId、artifactId、version、packaging、classfier。只要我们提供正确的坐标元素,Maven就能找到对应的构件,首先去你的本地仓库查找,没有的话再去远程仓库下载。

  如果没有配置远程仓库,会默认从中央仓库地址(http://repo1.maven.org/maven2)下载构件,该中央仓库包含了世界上大部分流行的开源项目构件,但不一定所有构件都有,我在以前的开发中就遇到过找不到oracle数据库jar包的问题,不知道现在是否依然如此。

  在我们自己开发项目的时候,也是要给我们的项目定义坐标的,这是强制性要求,只有这样,其他项目才能引用该项目的构件。

 2.2、Maven坐标的主要组成

  groupId:组织标识(包名)   artifactId:项目名称   version:项目的当前版本   packaging:项目的打包方式,最为常见的jar和war两种

  classifier: 该元素用来帮助定义构建输出的一些附属构件

  注:groupId、artifactId、version、packaging是必须定义的,classifier是不能被直接定义的,因为附属构件不是项目直接默认生成的,而是由附加的插件帮助生成的。

groupId :定义当前Maven项目隶属的实际项目。首先,Maven项目和实际项目不一定是一对一的关系。比如SpringFrameWork这一实际项目,其对应的Maven项目会有很多,如spring-core,spring-context等。这是由于Maven中模块的概念,因此,一个实际项目往往会被划分成很多模块。

        其次,groupId不应该对应项目隶属的组织或公司。原因很简单,一个组织下会有很多实际项目,如果groupId只定义到组织级别,而后面我们会看到,artifactId只能定义Maven项目(模块),那么实际项目这个层次将难以定义。

        最后,groupId的表示方式与Java包名的表达方式类似,通常与域名反向一一对应。上例中,groupId为junit,是不是感觉很特殊,这样也是可以的,因为全世界就这么个junit,它也没有很多分支。

artifactId : 该元素定义当前实际项目中的一个Maven项目(模块),推荐的做法是使用实际项目名称作为artifactId的前缀。比如上例中的junit,junit就是实际的项目名称,方便而且直观。

        在默认情况下,maven生成的构件,会以artifactId作为文件头,如junit-3.8.1.jar,使用实际项目名称作为前缀,就能方便的从本地仓库找到某个项目的构件。

version : 该元素定义了使用构件的版本,如上例中junit的版本是3.8.1,你也可以改为4.0表示使用4.0版本的junit。

packaging :定义Maven项目打包的方式,使用构件的什么包。首先,打包方式通常与所生成构件的文件扩展名对应,如上例中没有packaging,则默认为jar包,最终的文件名为junit-3.8.1.jar。也可以打包成war等。

classifier: 该元素用来帮助定义构建输出的一些附件。附属构件与主构件对应,如上例中的主构件为junit-3.8.1.jar,该项目可能还会通过一些插件生成如junit-3.8.1-javadoc.jar,junit-3.8.1-sources.jar, 这样附属构件也就拥有了自己唯一的坐标。

2.3、获取maven坐标(获取maven的三个关键属性值)

 1)使用网站搜索(从中央仓库获取)

  第一步:百度搜索关键字“maven repository”

  第二步:输入关键字查询获得需要内容,确定需要版本

  第三步:获取坐标

  2)使用本地仓库,通过eclipse获得坐标

    第一步:添加依赖pom.xml文件中,右击

  第二步:输入关键字,获取坐标。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

    上一篇给大家介绍了Maven的概念和仓库的一些信息,接下来给大家分享一下使用命令和MyEclipse创建Maven项目 一、使用命令管理Maven项目 1.1、...

    用户1195962
  • JavaSE(八)集合之Set

    今天这一篇把之前没有搞懂的TreeSet中的比较搞得非常的清楚,也懂得了它的底层实现。希望博友提意见! 一、Set接口 1.1、Set集合概述   Set集合:...

    用户1195962
  • IntelliJ IDEA 17和Maven构建javaWeb项目

    前言   电脑又断电了,眼看着写好的东西就没有了,这是第二次犯这个错误了。很难受呀!还是回到正题吧,我们来使用IDEA和Maven构建一个JavaWeb项目  ...

    用户1195962
  • jenkins在windows服务器上执行含git push命令的脚本权限不足的解决方法

    易墨
  • 【点云备忘录】点云可视化代码的视频记录

    在学习过程中,很多东西过一段时间可能会遗忘,所以产生了录制视频的想法。不能算“视频教程”,只能算是备忘吧。在【点云备忘录】这个系列中,将用录屏+讲解的形式记录一...

    点云乐课堂
  • Maven快速学习教程

    在开发中经常需要依赖第三方的包,包与包之间存在依赖关系,版本间还有兼容性问题,有时还里要将旧的包升级或降级,当项目复杂到一定程度时包管理变得非常重要。

    张果
  • Nginx系列教程(6)Nginx location 匹配规则详细解说

    Nginx 的 location 实现了对请求的细分处理,有些 URI 返回静态内容,有些分发到后端服务器等,今天来彻底弄懂它的匹配规则

    haikangweishi
  • VBA判断工作表是否存在&不存在时创建(Excel)

    林万程
  • 谷歌 DeepMind 发布 DNC 升级版,可扩展的稀疏可读写存储器增强计算机 SAM

    【新智元导读】谷歌DeepMind最新论文,在此前 DNC 成果的基础上,针对 DNC 无法扩展的问题,提出了一种端到端的可微分储存器读写机制,将其称为 “稀疏...

    新智元
  • 体验JPEG图片渐进模式

    前几天看了一个高手朋友的文章后才知道,原来JPEG文件有两种保存方式,分别是Baseline JPEG(标准型)和Progressive JPEG(渐进式) ...

    dys

扫码关注云+社区

领取腾讯云代金券