码迷,mamicode.com
首页 > 其他好文 > 详细

Maven(2)-坐标和依赖

时间:2015-10-20 00:03:46      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

本文简要介绍Maven里面的坐标(coodinate)以及maven依赖管理(Dependency)

一、坐标

先来个截图:
技术分享

在上图peoject栏目有groupId,artifactId,version,这个就是maven中坐标的概念,这三个属性能够唯一定位一个java架包,其中:

  • groupId代表架包所在的组织(package的概念),比如com.cnblogs
  • artifactId是一个单独架包(项目)的唯一表示
  • version代表当前项目的版本号

另外坐标还有个packaging属性,代表项目的类型,默认是jar,描述了项目打包后的输出。

  • 类型为jar的项目产生一个JAR文件
  • 类型为war的项目产生一个web应用。

在maven项目中groupId,artifactId,version就代表一个项目的坐标,其他项目可以通过这个几个坐标属性唯一单位到当前项目。

技术分享

上图中,通过junit的唯一坐标可以订位到junit4.12,然后在项目中进行使用。

maven仓库就是通过这些坐标来组织maven项目的,当项目指定了依赖的坐标后,项目就可以从maven的远程仓库中找到对应的maven项目,当相应坐标的maven项目已经在本地仓库时,项目会自动使用本地仓库坐标所能匹配的项目,而不会再从远程仓库下载。

二、依赖管理

maven坐标是maven项目的核心,依赖是通过maven坐标来实习的,上面的例子其实已经很好的演示了maven中的依赖:通过在pom文件中增加Dependency选项来完成,Dependency选项中会直接项目所依赖的项目的坐标。

2.1 传递性依赖

技术分享

在上图中,当前项目啊依赖与项目b和c,b项目依赖与项目d,c项目依赖于项目e。在maven中对于当前项目来说,只需要关注b和c。也就是说,在当前项目a的pom文件中只需要配置对于b和c的依赖,d和e的传递依赖maven会自动进行加载,而无需当前项目a进行关注,这是maven的强大之一(能够很好的管理依赖)

2.2 依赖范围

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>

上面的依赖配置中多了个scope选项,scope选项指定了maven依赖生效的范围,上面的例子范围是test,说明它在Compiler插件运行compile目标的时候是不可用的。它只有在运行compiler:testCompile和surefire:test目标的时候才会被加入到classpath中。

Maven(2)-坐标和依赖

标签:

原文地址:http://www.cnblogs.com/kmpp/p/maven_coordinate_and_dependency.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!