创建SpringCloud父工程

SpringCloud之整体聚合父工程Project

1.New Project

image-20210131134141292

image-20210131134408835

  • 创建父工程pom文件报错

image-20210131134853904

  • 解决方法为导入依赖,暂时不用做这一步,下面还会涉及到
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-project-info-reports-plugin -->
<dependency>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-project-info-reports-plugin</artifactId>
    <version>3.1.1</version>
</dependency>

2.字符编码

image-20210131135013335

3.注解生效激活

image-20210131135055653

4.java编译版本选8

image-20210131135238431

5.File Type过滤

image-20210131135944605

image-20210131140024373

6.删掉src

image-20210131140219727

7.跳过单元测试

image-20210131144310101

8.指定项目打包类型

项目的打包类型有三种:pomjarwar

  • 这里指定为pom
<!--这个pom文件作为父pom文件,起到依赖版本控制的作用,其他module工程继承该pom。-->
<packaging>pom</packaging>

9.Maven工程落地细节

这里一边介绍Maven中的DependencyManagementDependencies关系,一边完善pom文件的编写

简要介绍

  • Maven使用dependencyManagement元素来提供了一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层的父POM中看到dependencyManagement 元素。
  • 使用pom.xml中的dependencyManagement元素能让所有在子项目中引用一个依赖而不用显式的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用这个dependencyManagement元素中指定的版本号。

示例

  • 首先可以插入properties节点,在下面指定整个工程需要使用到的jar包版本。(当然也可以直接在Dependence节点中直接指定版本号,相比之下,使用properties能够更加清晰的管理jar包版本)
<!--统一管理jar包版本-->
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <junit.version>4.13.1</junit.version>
    <lombok.version>1.18.18</lombok.version>
    <log4j.version>1.2.17</log4j.version>
    <mysql.version>5.1.49</mysql.version>
    <druid.version>1.2.4</druid.version>
    <mybatis.spring.boot.version>2.1.4</mybatis.spring.boot.version>
</properties>
  • DependencyManagement节点添加所需依赖坐标,这里只是一个示例。
<!--jar包的总管,子模块继承之后,提供作用:锁定版本+子module不用写groupId和version-->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${mybatis.spring.boot.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>
  • 在子项目中的pom文件填写依赖,可以看到,不需要填写version标签
<!--junit-->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
</dependency>

好处

  • 如果有多个子项目都引用同一样依赖,则可以避免在每个使用的子项目里都声明一个版本号,这样当想升级或切换到另一个版本时,只需要在顶层父容器里更新,而不需要一个一个子项目的修改;另外如果某个子项目需要另外的一个版本,只需要声明version就可。也就是"一处修改,处处报错"(手动滑稽)

注意

  • dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。
  • 如果不在子项目中声明依赖,是不会从父项自中继承下来的,只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且versionscope都读取自父pom
  • 如果子项目中指定了版本号,那么会使用子项目中指定的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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.phz.springcloud</groupId>
    <artifactId>SpringCloudDemo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--这个pom文件作为父pom文件,起到依赖版本控制的作用,其他module工程继承该pom。-->
    <packaging>pom</packaging>

    <!--统一管理jar包版本-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <junit.version>4.13.1</junit.version>
        <lombok.version>1.18.18</lombok.version>
        <log4j.version>1.2.17</log4j.version>
        <mysql.version>5.7.31</mysql.version>
        <druid.version>1.2.4</druid.version>
        <mybatis.spring.boot.version>2.1.4</mybatis.spring.boot.version>
    </properties>
    <!--jar包的总管,子模块继承之后,提供作用:锁定版本+子module不用写groupId和version-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>3.1.1</version>
            </dependency>
            <!--spring boot 2.4.2 cloud i版推荐2.4.2版本-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.4.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring cloud 2020.0.1 也就是i版-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2020.0.1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring cloud alibaba 2.2.1.RELEASE 目前最新的版本-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
                <scope>runtime</scope>
            </dependency>
            <!-- druid-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.spring.boot.version}</version>
            </dependency>
            <!--junit-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>
            <!--log4j-->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

小提示,如果发现已经导入了lombok依赖,但是注解仍然失效的话,那应该是没有安装lombok插件的原因,idea插件市场直接搜索安装即可,但是本人是经常遇到插件市场连不了网的问题,那就上git仓库选择对应版本的lombok下载安装就可以了,点击跳转

image-20210201142945672

image-20210201143010754

猜你喜欢

转载自blog.csdn.net/qq_43509535/article/details/113477395
今日推荐