Maven(2)-坐标和依赖

来源:转载

本文简要介绍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中。



分享给朋友:
您可能感兴趣的文章:
随机阅读: