第一种方式
父子工程模块并列
项目视图:
父工程的pom.xml
maven父工程必须遵循以下两点要求:
1.packaging标签的文本内容必须设置为pom
2.把src目录删除掉
<?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.bjpowernode.maven</groupId>
<artifactId>001-maven-parent</artifactId>
<version>1.0.0</version>
<!--
packaging标签的是指定打包的方式
默认为jar,如果pom文件中没packaging标签那么默认就是打jar
-->
<!--
pom是项目对象模型(Project Object Module),该文件是可以被子工程继承
maven多模块管理 其实就是让它的子模块的pom文件来继承父工程的pom文件
-->
<!--
maven父工程必须遵循以下两点要求:
1.packaging标签的文本内容必须设置为pom
2.把src目录删除掉
-->
<!--父管理依赖的版本号-->
<properties>
<!--自定义标签名称-->
<!--
通常管理依赖版本号的标签名称由 = 项目名称+字段version
-->
<junit-version>4.10</junit-version>
<mysql-connector-java-version>8.0.19</mysql-connector-java-version>
<dubbo.version>2.6.2</dubbo.version>
<spring-webmvc-version>4.3.16.RELEASE</spring-webmvc-version>
</properties>
<!--父工程要加强管理子模块的所依赖-->
<dependencyManagement>
<!--父工程添加的依赖,所子模块会无条件的云继承-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit-version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java-version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring-webmvc-version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<!--JDK1.8编译插件-->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
java子工程pom.xml
<?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>
<!--指向父工程的GAV坐标-->
<artifactId>001-maven-parent</artifactId>
<groupId>com.bjpowernode.maven</groupId>
<version>1.0.0</version>
<relativePath>../001-maven-parent/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>006-maven-java</artifactId>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version><!-- 就近原则,子工程版本号则用子工程自己的,没则与父工程一致-->
</dependency>
</dependencies>
</project>
web子工程的pom.xml
<?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>
<artifactId>001-maven-parent</artifactId>
<groupId>com.bjpowernode.maven</groupId>
<version>1.0.0</version>
<relativePath>../001-maven-parent/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>003-maven-web</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
</project>
第二种方式
子工程在父工程下
比第一种方式多了
<!--父工程包含的所子模块-->
<modules>
<module>maven-java-001</module>
<module>maven-web-001</module>
</modules>
项目视图:
父工程的pom.xml
<?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.bjpowernode.maven</groupId>
<artifactId>maven-parent</artifactId>
<version>1.0.0</version>
<!--
maven父工程必须遵循以下两点要求:
1.packaging标签的文本内容必须设置为pom
2.删除src目录
-->
<packaging>pom</packaging>
<!--父工程包含的所子模块-->
<modules>
<module>maven-java-001</module>
<module>maven-web-001</module>
</modules>
<!--父工程在properties标签里管理依赖的版本号-->
<properties>
<!--
自定义标签,构成=项目名称+"version"
-->
<mysql.version>8.0.19</mysql.version>
<junit-version>4.10</junit-version>
</properties>
<!--父工程要管理所依赖-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit-version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<!--JDK1.8编译插件-->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
java子工程的pom.xml
<?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>
<artifactId>maven-parent</artifactId>
<groupId>com.bjpowernode.maven</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>maven-java-001</artifactId>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!--<version>8.0.19</version>-->
<!--如果version以当前项目指定的为准-->
</dependency>
</dependencies>
</project>
web工程的pom.xml
<?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>
<artifactId>maven-parent</artifactId>
<groupId>com.bjpowernode.maven</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>maven-web-001</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
</project>
第三种方式
第一种方式与第二种方式的结合
项目视图: