<!--简单一个父类的pom笔记-->
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.HelloHadoop</groupId>
<artifactId>Partent</artifactId>
<!-- 父类的打包方式是pom 打包方式分为pom:父类 jar:默认 war:web项目-->
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<!--在总的聚合工程中使用modules/module标签组合,指定模块工程的相对路径即可
打包的时候 只需要打父类的包就行了 会连同modules里面的子类一起打包-->
<modules>
<module>../son1</module>
<module>../son2</module>
</modules>
<!-- 父类中使用dependencyManagement 标签来确定父类控制的jar
使用这种方式的时候 子类只需要-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<!--jar依赖的范围 scope
1)compile(默认就是这个范围)
(1)main目录下的Java代码可以访问这个范围的依赖
(2)test目录下的Java代码可以访问这个范围的依赖
(3)部署到Tomcat服务器上运行时要放在WEB-INF的lib目录下
例如:对Hello的依赖。主程序、测试程序和服务器运行时都需要用到。
2)test
(1)main目录下的Java代码不能访问这个范围的依赖
(2)test目录下的Java代码可以访问这个范围的依赖
(3)部署到Tomcat服务器上运行时不会放在WEB-INF的lib目录下
例如:对junit的依赖。仅仅是测试程序部分需要。
3)provided
(1)main目录下的Java代码可以访问这个范围的依赖
(2)test目录下的Java代码可以访问这个范围的依赖
(3)部署到Tomcat服务器上运行时不会放在WEB-INF的lib目录下
-->
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--方式二 这种会让父类也出现jar 但是子类完全不用配置-->
<!--进行依赖的统一管理 全部依赖父项目的jar 子类不用配置jar-->
<!-- <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
</project> -->
</project>
<!--**********************************************************************************************************************-->
<!--Partent的子类son1 -->
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--继承 手动继承-->
<parent>
<groupId>com.HelloHadoop</groupId>
<artifactId>Partent</artifactId>
<version>1.0-SNAPSHOT</version>
<!--指定从当前pom.xml文件出发寻找父工程的pom.xml文件的相对路径-->
<relativePath>../Partent/pom.xml</relativePath>
</parent>
<!--继承 自动继承 具有层级结构的父子类会自动生成需要的配置信息-->
<parent>
<artifactId>Father</artifactId>
<groupId>com.HelloHadoop</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<!--这个项目打包之后的安装路径 -->
<!--<groupId>com.HelloHadoop</groupId> 1--> <!--继承之后 1 和2 两个信息可以去掉 由父类统一管理版本和路径-->
<artifactId>son1</artifactId>
<!--<version>1.0-SNAPSHOT</version> 2-->
<!--子项目完全继承父类的jar 删除范围和版本号 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId></dependency>
<!--
-->
</dependencies>
</project>
<!--**********************************************************************************************************************-->
<!--Partent的子类son2 -->
<!-- 统一版本控制 properties 里面的标签可以自定义 但是下面引用
的时候 需要使用${} 只可以在一个pom文件内 跨文件不好使-->
<properties>
<junit_version> 4.5</junit_version> <!--标签可以自定义名字 引用使用${junit_version} -->
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId></dependency>
<version>${junit_version}</version>
<scope>compile</scope>
</dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit_version}</version>
<scope>compile</scope>
<!--依赖排除 排除掉 MakeFriends 对于HelloHadoop的间接依赖 需要写在dependency标签里面-->
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--关于直接依赖和间接依赖:
a=>b 直接依赖
a=>b=>c a间接依赖c
对于a来说 只有 c引入的依赖范围为compile时可以访问
-->
绝不摆烂