初学java项目管理工具(Maven)时,容易理不清父子工程依赖配置之间的关系。接下来,以本人初学Mybatis时构建的父子工程为例,来解释xml文件配置信息。
1、软件环境及版本
- 开发工具:Eclipse Java EE
- Maven:3.6.3
- JDK:1.8
2、解释父子xml文件配置信息
这里父工程名为:Parent,子工程名为:mybatis01。
父子两个工程都是Maven项目,父工程打包方式packaging是:pom,子工程打包方式packaging是:jar。
父工程(Parent)pom.xml文件配置信息如下。
<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.kuangshen</groupId>
<artifactId>Parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging> <!-- 父工程打包方式:pom -->
<!-- 配置聚合:目的为了一键安装各工程 -->
<modules>
<!-- 指定各个子工程的相对路径 -->
<module>../mybatis01</module>
</modules>
<!-- 统一配置依赖版本号:这里配置的依赖只是对依赖版本的管理配置,子工程并不会直接引入
如果子工程要需要引入只需要加入如下标签(以junit为例):
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
这样就可以引入junit的jar包,这样的好处就是可以在父工程统一管理
整个工程的jar包依赖版本。另外,如果有的工程不需要一些jar就可以不进行引入
-->
<dependencyManagement>
<dependencies>
<!-- 统一管理junit版本 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--
导入依赖:目前这里的配置的依赖所引入的jar包在此工程下的所有子工程都会被引入
-->
<dependencies>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
</dependencies>
</project>
子工程(mybatis01)pom.xml文件配置信息如下。
<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>
<!-- 子工程坐标 -->
<!-- 声明对父工程的引用之后,就可以把子工程坐标中存在和父工程坐标重复的内容删除 -->
<artifactId>mybatis01</artifactId>
<!-- 子工程中声明父工程 -->
<parent>
<groupId>com.kuangshen</groupId>
<artifactId>Parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 以当前文件为基准的父工程pom.xml文件的相对路径 -->
<relativePath>../Parent/pom.xml</relativePath>
</parent>
<dependencies>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId> <!-- 引入junit,不写版本号
<scope>test</scope>
</dependency>
</dependencies>
</project>