文章目录
- 🔥Maven聚合开发_聚合关系
- 🔥Maven聚合开发_继承关系
- 🔥Maven聚合案例_搭建父工程
 
🔥Maven聚合开发_聚合关系

 之前我们在Idea中开发时会将项目的所有包放在同一个工程当中。
 
⭐ domain:定义实体类
⭐ dao:操作数据库
⭐ service:具体的业务逻辑,需要调用dao的方法。
⭐ controller:前后端交互,需要调用service的方法。
⭐ webapp:存放前端资源
假如我们现在写了两个项目分别是电商卖家端和电商买家端,两个项目都需要调用serive层查询订单的方法。原来的写法如下:
 
重复编码造成开发效率降低。
而使用maven后,我们可以把之前的项目按需拆分成一个个小项目,之后将小项目发布到仓库中,小项目之间也可以互相引用,并且在我们的项目中引入需要的小项目即可。

Maven将一个大项目分成一个个小项目开发,最后打包时会将这些小的项目打成一个完整的war包独立运行。
 
🔥Maven聚合开发_继承关系

Maven中的继承是针对于父工程和子工程。父工程定义的依赖和插件子工程可以直接使用。注意父工程类型一定为POM类型工程。
多继承
 在Maven中对于继承采用的也是单继承,也就是说一个子项目只能有一个父项目。但我们可以在 dependencyManagement 配置多继承。写法如下:
<dependencyManagement>
    <dependencies>
        <!--父项目a-->
        <dependency>
            <groupId>com.it</groupId>
            <artifactId>parent_a</artifactId>
			<version>1.0-SNAPSHOT</version*>
            <type>pom</type>
            <!-- 引入父项目,scope的值为import-->
            <scope>import</scope>
        </dependency>
        <!--父项目b-->
        <dependency>
            <groupId>com.it</groupId>
			<artifactId>parent_b</artifactId>
            <version>1.0-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
🔥Maven聚合案例_搭建父工程

 1.创建一个Maven工程,创建时不需要选择模板。
 
2.由于父工程是虚拟工程,不需要写逻辑代码,所以删除父工程的src目录。
3.由于父工程的依赖和插件子工程都能继承,可以将需要的依赖和插件都配置在父工程中。
	<groupId>com.it</groupId>
	<artifactId>maven_demo2</artifactId>
	<version>1.0-SNAPSHOT</version>
	<packaging>pom</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    
    <dependency>
		<groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
        <scope>provided</scope>
   </dependency>
    
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>
   
    <!-- jdbc驱动 -->
    <dependency>
        <groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
        <version>8.0.27</version>
    </dependency>
    
    <!-- jstl -->
    <dependency>
		<groupId>org.apache.taglibs</groupId>
        <artifactId>taglibs-standard-spec</artifactId>
        <version>1.2.5</version>
    </dependency>
   
   <dependency>
		<groupId>org.apache.taglibs</groupId>
        <artifactId>taglibs-standard-impl</artifactId>
        <version>1.2.5</version>
    </dependency>
 </dependencies>
 <build>
    <plugins>
        <!-- tomcat插件 -->
        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-mavenplugin</artifactId>
            <version>2.1</version>
            <configuration>
			<port>8080</port>
                <path>/</path>
                <uriEncoding>UTF-8</uriEncoding>
                <server>tomcat7</server>
                <systemProperties>
<java.util.logging.SimpleFormatter.format>%1$tH:%1$tM:%1$tS %2$s%n%4$s:
%5$s%6$s%n</java.util.logging.SimpleFormatter.format>
                </systemProperties>
            </configuration>
        </plugin>
    </plugins>
</build>
IDEA中工程和模块有什么区别?
没什么区别,只是新工程会占据一个新窗口,我们一般写父工程时定义为新工程,
写子工程时定义为新模块。



















