Spring cloud入门-1:版本选型、构建父工程
- 1、前言及版本选型
- 2、IDEA新建project工作空间
- 2.1 New Project
- 2.2 聚合总父工程名字
- 2.3 Maven选版本
- 2.4 字符编码
- 2.5 注解生效激活
- 2.6 java编译版本选8
- 2.7 File Type过滤
- 3、修改父工程pom文件
- 3.1 删除src文件夹
- 3.2 添加dependencyManagement
- 3.3 父工程发布到仓库
说明:本次spring cloud入门demo是做一个订单-支付模块微服务。
1、前言及版本选型
作为一个刚入行java一年的程序员,后续博文主要是记录学习spring cloud的过程。
如下图,本次入门demo的版本选型参考了spring cloud官网的推荐之一:Hoxton + spring boot 2.2.x,2.3.x。
本次工程的demo和版本选型均采用了尚硅谷阳哥的版本选型,具体如下:
spring cloud:Hoxton
spring boot:2.2.2.RELEASE
spring cloud alibaba:2.1.0.RELEASE
java:1.8
maven:3.5及以上
mysql:5.7及以上
本次spring cloud入门demo是做一个订单-支付模块微服务。通过这个简单的业务,主要是来学习下spring cloud的各个组件之间的使用。
接下来是为整个项目创建一个总父工程。
2、IDEA新建project工作空间
IDEA和Maven的安装可以参考上一篇博文(Ubuntu16.04+IDEA社区版+Maven+Tomcat的安装及运行Java Web项目)。
2.1 New Project
点击File-> New-> Project
得到下图,然后点击maven,选择自己的jdk,勾选Create from archetype,然后选择org.apache.maven.archetypes:maven-archetype-site,然后点击Next
2.2 聚合总父工程名字
得到下图后,
输入总父工程名字:cloud2021,选择自己工程的目录Location,填写GRV坐标。点击Next
2.3 Maven选版本
得到下图后,将MAVEN的版本改为我们自己所下载的版本
点击FInish,得到下图
2.4 字符编码
接着处理整个总工程的字符编码,
点击File-> Settings -> Editor -> File Encodings,得到下图
然后将编码均设置为UTF-8,然后点击Apply,OK
2.5 注解生效激活
由于后面的工程都要用很多注解,在总工程这里使得激活注解生效
点击File-> Settings -> Build,Execution,Deployment -> Compiler -> Annotation Processors
得到下图,点击Default,给Enable annotation processing打钩,然后点击Apply,OK
2.6 java编译版本选8
接着将java编译版本改为1.8
点击File-> Settings -> Build,Execution,Deployment -> Java Compiler
得到下图将Target bytecode version 选为java8,然后点击Apply,OK
2.7 File Type过滤
如下图,IDEA创建工程时,会自带一些文件类型,如下图的.idea文件,.iml文件。而这些文件类型,我们后面基本不会使用,所以如果不想一直看到这些的话,可以将这些文件进行过滤。
过滤步骤如下:
点击File-> Settings -> Editor -> File Types
得到下图,点击Ignore files and folders,添加你所不需要的文件类型,如.idea文件,.iml文件,然后点击Apply,OK
此时再看一下我们的工程目录下,就没有刚刚的.idea文件和.iml文件了。
3、修改父工程pom文件
3.1 删除src文件夹
在第2步中已经创建好了父工程,接下来需要对pom文件里的jar包进行优化和整理。
首先将不需要的src文件夹删除。鼠标右键src文件夹,点击delete。
3.2 添加dependencyManagement
首先需要明白dependencyManagement与dependencies之间的区别:
Maven使用dependencyManagement元素提供了一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层父POM中看到dependencyManagement元素。
使用pom.xml中的dependencyManagement元素能让所有在子项目中引用一个依赖而不用显式地列出版本号。
Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用这个dependencyManagement元素中指定的版本号。
如下图,我们在父工程的pom文件的dependencyManagement中指定了druid的版本号为1.1.16,那么在子项目中添加druid时可以不指定版本号了。
这样做的好处是:如果有多个子项目都引用同一个依赖,则可以避免在每个使用的子项目里都声明一个版本号,这样当想升级或切换到另一个版本时,只需要在顶层父容器中修改,而不需要一个一个子项目修改,即一处修改,处处生效。
但是dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示地声明需要用的依赖。
如果子项目中指定了版本号,那么会使用子项目中指定的jar包版本。
父工程的pom文件如下:
注意:如果填写过程中出现project元素或者其他元素报红等情况,可以尝试重启下IDEA。
<?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>org.example.springcloud</groupId>
<artifactId>cloud2021</artifactId>
<version>1.0-SNAPSHOT</version>
<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.12</junit.version>
<log4j.version>1.2.17</log4j.version>
<lombok.version>1.16.18</lombok.version>
<mysql.version>5.1.47</mysql.version>
<druid.version>1.1.16</druid.version>
<mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
</properties>
<!-- 子模块继承之后,提供的作用:锁定版本+子module不用写groupId和version-->
<dependencyManagement>
<dependencies>
<!-- spring boot 2.2.2-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring cloud Hoxton.SR1-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring-cloud-alibaba 2.1.0.RELEASE-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}}</version>
</dependency>
<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>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}}</version>
<optional>true</optional>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
</project>
3.3 父工程发布到仓库
当父工程的pom文件的jar包配置号之后,需要验证是否可以构建成功。
pom文件鼠标右击 -> maven -> Reload project,reload之后,点击右边的maven,选择install,然后点击运行按钮
如果运行得到BUILD SUCCESS,说明父工程的环境配置成功