`

maven坐标和依赖

阅读更多


maven 坐标

groupId :定义当前maven项目隶属的实际项目。首先,maven项目和实际项目不一定是一对一的关系。

artifactId : 该元素定义实际项目中的第一个maven项目模块,推荐的做法是使用实际项目名称作为artifactid的前缀,作用在于方便寻找实际构件。

version  : 该元素定义maven项目当前所处的版本,其中SNAPSHOT为快照版本.

packaging : 该元素定义maven项目的打包方式。首先,打包方式通常与所生成构建的文件扩展名对应。可以支持jar和war的打包,莫非为jar方式。


classifier:该元素用来帮助定义构建输出一些附属构建。附属构建与主构建对应。如主构件是nexuc-indexer-2.0.0.ar,该项目可能还会通过使用一些插件生成

如nexus-indexer-2.0.0-javadoc.jar,nexus-indexer-2.0.0-sources.jar这样一些附属构件,其中包含了java的文档和源码。

 

 


maven中的一览范围就是用来控制依赖与这三种cleasspath(编译classpath,测试classpath,运行classpath)的关系,maven有一下几种依赖范围:


compile : 编译依赖范围。如果没有指定,就会默认使用该依赖范围。使用此依赖范围的Maven依赖,对于编译、测试、运行三种classpath都有效、典型的例子是spring-core,在编译、测试和运行的时候都需要使用该依赖。

test : 测试依赖范围。使用此依赖范围的Maven依赖,只对于测试classpath有效,在编译主代码或者运行项目的使用时将无法使用此类依赖。典型的例子是junit,它只是在编译测试代码及运行测试时候才需要。

provided : 已提供依赖范围。使用此依赖范围的maven依赖,对于编译和测试classpath有效,但是运行时无效。典型的例子是sevlet-api,编译和测试项目的时候需要该依赖,但是运行时项目的时候,由于容器已经提供,就不需要Maven重复地引入一遍。

runtime : 运行时依赖范围。使用此依赖范围的Mavne依赖,对于测试和运行classpath有效,但是在编译主代码时无效。典型的例子就是JDBC驱动实现,项目主代码的编译只需要JDK提供的JDBC接口,只有在执行测试或者运行项目的时候才需哟啊实现上述接口的具体JDBC驱动。

system : 系统依赖范围。该依赖与三种classpath的关系,和provided依赖范围完全一致。但是,使用system范围的依赖时必须通过systemPath元素显示地制定依赖文件的路径。

 由于此类依赖不是通过mavne仓库解析的,而且往往与本机系统绑定,可能造成构建的不可移植,因此应谨慎使用。systemPath元素可以引用环境变量 如:

   <dependency>
         <groupId>javax.sql</groupId>
          <artifactId>jdbc-stenxt</artifactId>
           <version>2.0</version>
           <scope>system</scope>
            <systemPath>${java.hoem}/lib/rt.java</systemPath>
   </denpendency>

import :  导入依赖范围。该依赖范围不会对三种classpath产生实际的影响。


maven中的传递性依赖

如果A依赖B B依赖C 我们可以说A对于B是第一直接依赖,B对于C是第二直接依赖,A对于C是传递依赖。其中第一直接依赖和第二直接依赖的范围决定了传递性依赖的范围。


依赖调解

    maven中的依赖调解我们注意:当项目A同时依赖X(1.0)和依赖(2.0)这两个jar包,那么maven会根据这两个依赖的路径进行判断。

    (1).路径最近者优先。

    (2).当依赖路径相同的情况下,那么第一声明者优先。


可选依赖是不会被传递。

 <dependency>
         <groupId>javax.sql</groupId>
          <artifactId>jdbc-stenxt</artifactId>
           <version>2.0</version>
            <optional>true</optional>
   </denpendency>


排除依赖  在申明exclusion的时候只需要groupId和artifactId无需指定版本。
 <dependency>
         <groupId>com.juvenxu.mvnbook</groupId>
          <artifactId>project-b</artifactId>
           <version>1.0.0</version>
         <exclusions>
             <exclusion>
                   <groupId>com.juvenxu.mybook</groupId>
                    <artifactId>project-c</artifactId>
             </exclusion>
         </exclusions>
</denpendency>

 <dependency>
         <groupId>>com.juvenxu.mybook</groupId>
          <artifactId>project-c</artifactId>
          <version>2.0</version> 
</denpendency>


归类依赖 可以使用美元符号和大括号环绕方式引用maven属性。

申明
<properties>
  <springframework.version>2.5.6</springframework.version>
</properties>

使用
 <dependency>
   <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
     <version>${springframework.version}</version>
</dependency>

优化依赖

通过 mvn dependency : list 可以查看当前项目的已解析依赖。

     mvn dependency : tree 解析依赖树 。

     mvn analyze 帮助分析当前项目的依赖。

 

分享到:
评论

相关推荐

    Maven介绍安装配置坐标依赖等等

    Maven简介,maven与ant比较,windows下安装配置,坐标依赖,仓库,部署第三方构建

    Maven: 仓库搜索服务

    如何输入关键字,寻找需要依赖jar的MAVEN坐标,需要提供确切的MAVEN坐标 1.Sonatype Nexus 地址: https://repository.sonatype.org 2. Jarvana 地址: http://www.jarvana.com/jarvana 3.MVNbrowser 地址: ...

    三. 坐标和依赖

    NULL 博文链接:https://sgq0085.iteye.com/blog/1860636

    Maven原理和实践-培训课件.ppt

    何为Maven 构建,依赖管理,项目信息聚合 Maven核心概念 坐标,依赖,仓库,生命周期,插件 Maven最佳实践 创建、打包、发布、版本管理 项目实战 Nexus(Todo…) M2eclipse(Todo…)

    深入理解Maven的坐标与依赖

    主要介绍了深入理解Maven的坐标与依赖,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    JxBrowser开发maven仓库jar包

    该jar在maven仓库已经找不到了,需要的可以下载,然后互丢到本地仓库或者私服在添加依赖即可。

    jacob-1.18.jar/dll maven

    jacob-1.18的资源包还有 jacob-1.18-x64.dll和jacob-1.18-x86.dll. 把对应的windows版本扔到 C:\Windows\System32 并添加环境变量大到path中 “%SYSTEMROOT%\System32\jacob-1.18-x86.dll;”或者 “%SYSTEMROOT%\...

    Maven入门巨无霸视频教程(2.24G)

    使用Maven核心概念介绍(坐标、依赖、仓库、插件、...任亮系列-maven坐标.mp41010.任亮系列-maven依赖介绍.mp41111.任亮系列-maven依赖范围.mp41212.任亮系列-maven依赖传递和可选依赖和排除依赖.mp41313.任亮系列-mav

    Maven:构建和管理Java项目Maven:构建和管理Java项目

    介绍如何使用 POM 文件来描述项目的结构和依赖关系,以及如何使用坐标来唯一标识项目和依赖。解释 Maven 仓库的概念和作用,以及如何使用中央仓库和本地仓库。 第二部分:Maven 的核心功能 详细介绍 Maven 的核心...

    common-lang-3.1.1-API文档-中文版.zip

    Maven坐标:com.twelvemonkeys.common:common-lang:3.1.1; 标签:twelvemonkeys、common、lang、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...

    springfox-oas-3.0.0-API文档-中英对照版.zip

    Maven坐标:io.springfox:springfox-oas:3.0.0; 标签:oas、springfox、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的...

    jna-platform-4.3.0-API文档-中英对照版.zip

    Maven坐标:net.java.dev.jna:jna-platform:4.3.0; 标签:java、jna、platform、中英对照文档、jar包; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的...

    maven window下安装包

    第5章:坐标和依赖/5.9 最佳实践/5.9.2 依赖属性使用变量 第5章:坐标和依赖/5.9 最佳实践/5.9.3 依赖关系查看 第6章:仓库/6.1 何为Maven仓库 第6章:仓库/6.2 仓库的布局 第6章:仓库/6.3 仓库的分类 第6章:仓库/...

    maven课程讲义.doc

    POM对象模型,每个maven工程中都有一个pom.xml文件,定义工程所依赖的jar包、本工程的坐标、打包运行方式。。 2、依赖管理系统(基础核心 ) maven通过坐标对项目工程所依赖的jar包统一规范管理。 3、maven定义...

    flink-connector-jdbc-2.12-1.14.3-API文档-中英对照版.zip

    Maven坐标:org.apache.flink:flink-connector-jdbc_2.12:1.14.3; 标签:apache、flink、connector、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档...

    commons-net-3.3-API文档-中英对照版.zip

    Maven坐标:commons-net:commons-net:3.3; 标签:commons、net、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和...

    maven 构建好的 IK 分词器,可直接使用

    用于 Elasticsearch 2.2 的 中文分词器,已构建好,直接放入 Elasticsearch 的plugins 目录下使用

    spring-messaging-4.3.12.RELEASE-API文档-中英对照版.zip

    Maven坐标:org.springframework:spring-messaging:4.3.12.RELEASE; 标签:springframework、spring、messaging、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,...

    commons-beanutils-1.7.0-API文档-中英对照版.zip

    Maven坐标:commons-beanutils:commons-beanutils:1.7.0; 标签:beanutils、commons、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...

    maven3教程(私塾在线)视频配套学习资料

    3、maven坐标 4、maven命令:重点理解【生命周期和阶段】和【插件和目标】 5、在eclipse中通过m2eclipse插件使用maven 6、配置和使用私服 7、实战maven,把以前一个不是用maven做的模块,移植为maven项目 这是...

Global site tag (gtag.js) - Google Analytics