<!--简单一个父类的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时可以访问

-->

绝不摆烂