1. 多模块管理

目的目录结构
Maven - 图1

创建父工程maven-parent

创建普通的maven工程maven-parent

  1. 删除src文件
  2. maven-parent/pom.xml中,将packaing改为pom,默认jar,修改成pom表示,该模块可以被继承
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <!--maven版本-->
  6. <modelVersion>4.0.0</modelVersion>
  7. <!--1. 删除该父工程中的src文件-->
  8. <!--包名 -->
  9. <groupId>com.sinohealth</groupId>
  10. <!--工件名 -->
  11. <artifactId>maven-parent</artifactId>
  12. <!--2.默认情况下packaging是Jar的形式,表示不能被继承。-->
  13. <!--修改成pom表示,该模块可以被继承-->
  14. <packaging>pom</packaging>
  15. <version>1.0-SNAPSHOT</version>
  16. <name>父工程</name>
  17. <!--3.自动新增的,表示该父工程下有什么子工程-->
  18. <modules>
  19. <module>model</module>
  20. <module>dao</module>
  21. <module>service</module>
  22. <module>web</module>
  23. </modules>
  24. <!--声明一些属性,方便查看管理jar版本-->
  25. <properties>
  26. <lombok.version>1.16.22</lombok.version>
  27. <druid-starter.version>1.1.10</druid-starter.version>
  28. <fastjson.version>2.0.7</fastjson.version>
  29. </properties>
  30. <!--声明依赖,不实际引入,只是为了使得子模块版本的统一配置-->
  31. <dependencyManagement>
  32. <dependencies>
  33. <!--lombok依赖-->
  34. <dependency>
  35. <groupId>org.projectlombok</groupId>
  36. <artifactId>lombok</artifactId>
  37. <version>${lombok.version}</version>
  38. </dependency>
  39. <!--druid依赖-->
  40. <dependency>
  41. <groupId>com.alibaba</groupId>
  42. <artifactId>druid-spring-boot-starter</artifactId>
  43. <version>${druid-starter.version}</version>
  44. </dependency>
  45. </dependencies>
  46. </dependencyManagement>
  47. <!--声明依赖,并且引入,所有的子模块都会拥有这个依赖-->
  48. <dependencies>
  49. <dependency>
  50. <groupId>com.alibaba</groupId>
  51. <artifactId>fastjson</artifactId>
  52. <version>${fastjson.version}</version>
  53. </dependency>
  54. </dependencies>
  55. </project>

创建子工程model

创建普通的maven工程model

  1. 删除<groupId>com.jepcc.app</groupId><version>1.0-SNAPSHOT</version>
  2. 因为groupId和version会继承自父模块的groupId和version。
  3. 增加<packaging>jar</packaging>,将打包方式设置为jar,毕竟是子类,无需被继承。
<?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">
    <!--maven版本-->
    <modelVersion>4.0.0</modelVersion>
    <!--1.声明引用的父工程-->
    <parent>
        <artifactId>maven-parent</artifactId>
        <groupId>com.sinohealth</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <!--2.有了parent声明,那么部分属性值会从父工程parent继承过来,如groupId、version-->
    <!--<groupId>com.sinohealth</groupId>-->
    <!--<version>1.0-SNAPSHOT</version>-->
    <artifactId>model</artifactId>
    <!--3.修改为jar包,因为是子工程,不需要被继承-->
    <packaging>jar</packaging>
    <name>model子工程</name>

</project>

创建子工程dao

创建普通的maven工程dao

  1. 删除<groupId>com.jepcc.app</groupId><version>1.0-SNAPSHOT</version>
  2. 因为groupId和version会继承自父模块的groupId和version。
  3. 增加<packaging>jar</packaging>,将打包方式设置为jar,毕竟是子类,无需被继承。
  4. 因为dao层是需要model层的,因此引入model
<?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.sinohealth</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>dao</artifactId>
    <!--1.新增设置为jar包-->
    <packaging>jar</packaging>
    <name>dao子工程</name>

    <dependencies>
        <!--对model模块进行依赖-->
        <dependency>
            <groupId>com.sinohealth</groupId>
            <artifactId>model</artifactId>
            <!--project.version,这是隐式属性。因为声明了parent的父工程,子工程会继承父工程中的属性,包括version-->
            <!--因此project表示自身,.version表示取用了父类继承过来,并为己用的version-->
            <version>${project.version}</version>
        </dependency>
    </dependencies>

</project>

创建子模块service

创建普通的maven工程service

  1. 删除<groupId>com.jepcc.app</groupId><version>1.0-SNAPSHOT</version>
  2. 因为groupId和version会继承自父模块的groupId和version。
  3. 增加<packaging>jar</packaging>,将打包方式设置为jar,毕竟是子类,无需被继承。
  4. 增加依赖,service 层依赖dao层和model层,但我们只需要添加dao层,因为dao模块中已经添加了对model模块的依赖。
<?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>

    <!--声明父工程-->
    <parent>
        <artifactId>maven-parent</artifactId>
        <groupId>com.sinohealth</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>service</artifactId>
    <packaging>jar</packaging>
    <name>service子工程</name>
    <dependencies>
        <!--业务层需要model层,但model层已经用了dao所以只需要引入model层即可        -->
        <dependency>
            <groupId>com.sinohealth</groupId>
            <artifactId>dao</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
</project>

创建子工程 web

创建普通的maven工程web

  1. 删除<groupId>com.jepcc.app</groupId><version>1.0-SNAPSHOT</version>
  2. 因为groupId和version会继承自父模块的groupId和version。
  3. 增加<packaging>war</packaging>,因为是作为导出项目,链接各个模块,然后统一链接导出运行
<?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>
    <parent>
        <artifactId>maven-parent</artifactId>
        <groupId>com.sinohealth</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>web</artifactId>
    <!--注意web层的打包方式式war包-->
    <packaging>war</packaging>
    <name>web子工程</name>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.0.5.RELEASE</version>
        </dependency>
    </dependencies>

</project>

POM.xml文件解析

<!---->