groupId、artfactId、version是定义项目的基本坐标
<?xml version="1.0" encoding="UTF-8"?>
<project>
<!--其它省略,就关注下面-->
<dependencies>
<dependency>
<groupId></groupId>
<artfactId></artfactId>
<version></version>
<tyep>依赖类型</tyep>
<scope>依赖范围</scope>
<optional>可选依赖</optional>
<exclusions>
排除依赖
<exclusion>
<groupId></groupId>
<artfactId></artfactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
其中
传递依赖
可选依赖
原则为:路径最近优先;第一声明优先
如果统一个项目中的不同模块如hadoop-common、hadoop-hdfs等等,他们的依赖版本都是相同的,就可以使用归类依赖。这样依赖版本就可以进行统一升级
<?xml version="1.0" encoding="UTF-8"?>
<project>
<properties>
<scala.version>${scala.suffix.version}.8</scala.version>
</properties>
<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-compiler</artifactId>
<version>${scala.version}</version>
</dependency>
</dependencies>
</project>
为了解决多个模块(pom.xml)有很多相同的配置,可以以使用pom的继承。需要创建pom的父子结构,在父pom中声明一些配置供子pom继承,以实现"一处声明,多出使用"的目的
父模块中pom包含的信息
子模块使用parent元素声明父模块,parent夏子元素中groupId、artfactId和version指定父模块
坐标,必填
父模块常用元素
作为父模块pom的打包类型必须为pom
为了能够使用一跳命令就能够构件多个模块,可以建立额外的模块,通过该模块构件多个模块,而该模块
也有pom
聚合:将多个模块聚合在一起,这里需要显示定义的pom,并用modules配置多个已有模块来表示聚合
,聚合模块无需 src/main/java 目录
使用:一般情况下,为了方便用户构件项目,通常将聚合模块放在项目目录的最高层,其它模块则作为
聚合模块的子目录存在
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.liumm</groupId>
<artifactId>Hadoop-Learning</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>Hdfs</module>
<module>MapReduce</module>
<module>Hbase</module>
<module>Hive</module>
<module>ElasticSearch</module>
</modules>
</project>
经典模块结构
内容来源于网络,如有侵权,请联系作者删除!