项目中我们各个微服务的POM详解

本文讲述了如何在Spring Boot项目中正确配置IDEA的Maven环境,包括设置模块结构、打包方式、依赖管理(parent和dependencyManagement标签的使用)、以及如何利用Common模块和统一版本管理。

我们一开始一定要检查我们的IDEA中maven有没有和我们的安装的位置对应上。否则后期很容易报错

①、在我们的父模块中有几个很重要的标签:

第一个是我们的Modules标签,后期我们加入新的服务会自动在里面添加

<modules>
        <module>store-gateway</module>
        <module>store-commons</module>
        <module>store-front-user</module>
    </modules>

②、打包的方式:我们在父级工程或者聚合项目中,使用POM:表示我们父工程不打包,仅仅把它作为我们的POM依赖文件

<packaging>pom</packaging>

1.pom工程:用在父级工程或聚合工程中。用来做jar包的版本控制。
2.war工程:将会打包成war,发布在服务器上的工程。如网站或服务。
3.jar工程:将会打包成jar用作jar包使用,packaging默认类型。

③、parent标签:通常用于指定我们的这个模块属于哪个工程。
因为我们是springboot的项目,所以我们的父级项目肯定是springboot,而我们的项目中的各个服务父类项目都是我们父类
既然是我们的父类是springboot,那么我们的各个依赖都会根据它(springboot版本)来进行导入,如果想导入别的版本自己标明

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.9.RELEASE</version>
        <relativePath/>
    </parent>

④、properties表示我们的统一的版本,方便后期的维护和管理,如果没有指定,我们统一默认使用的是我们的springboot对应版本的版本。(可以按住Ctrl点击springboot版本,进去后再次点击即可查看)

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR10</spring-cloud.version>
        <mysql.version>5.1.47</mysql.version>
        <mybatis.version>2.1.1</mybatis.version>
        <druid.version>1.2.5</druid.version>
        <mybatis-plus.version>3.5.2</mybatis-plus.version>
        <elasticsearch.version>7.8.0</elasticsearch.version>
    </properties>

⑤、dependencyManagement:其实他并不是导入真的依赖,而是我们的子工程如果使用ga(即groupId,artifactId),就可以导入我们父工程指定的版本(在properties中定义的)
我们需要晓得一点,如果我们在dependencyManagment依赖中如果导入的是起步依赖的话(例如我们Spring-Cloud alibba-dependencies,spring-cloud-alibaba-nacos的GA就可以使用nacos,因为我们的起步依赖点开里面就有很多GA),我们的子类服务导入相应的依赖就可以使用。

<dependencyManagement>

        <dependencies>
            <!-- springCloud -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--nacos的管理依赖-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- mysql驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <!--mybatis-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.version}</version>
            </dependency>

            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis-plus.version}</version>
            </dependency>

            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>${druid.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

⑥、如果我们加在我们的<dependecyManagment 标签中,那么我们子模块的每一个都会拥有,不用我们的一个个导入。

 <dependencies>
        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
        </dependency>
 <dependencies/>

总结:如果我们在项目中想一个模块作为Common模块,让每个人都可以引用他的里面所有类,我们需在他的lifecycle中install下载到我们库中。
然后在别的模块中进行引用即可。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值