springboot的maven多模块项⽬架构微服务搭建——构建多模
块项⽬(依赖⽅式)
  总想对微服务架构做⼀个⼩⼩的总结,不知如何下⼿,最近觉得还是从搭建微服务的过程来⼊⼿,对于springboot的maven项⽬从构建多模块架构进⽽衍化为常⽤的微服务架构来做个记录吧。
  ⾸先,创建多个springboot项⽬,项⽬结构如图:
      裁剪后如右侧
  创建完成后,先解释⼀下:sharp-pom是⽗类⼯程,其他所有⼯程都要继承该⼯程,sharp-pom主要⽤来管理版本和声明⼀些jar的引⽤,本博主没有做聚合⼯程,这⾥说明⼀下聚合和继承的关系:继承是⽗POM为了抽取统⼀的配置信息和依赖版本控制,⽅便⼦POM直接引⽤,简化⼦POM的配置。聚合(多模块)则是为了⽅便⼀组项⽬进⾏统⼀的操作⽽作为⼀个⼤的整体,所以要真正根据这两者不同的作⽤来使⽤,不必为了聚合⽽继承同⼀个⽗POM,也不⽐为了继承⽗POM⽽设计成多模块。
接下来对各个模块进⾏处理
sharp-pom 只需要保留l⽂件即可,注意打包⽅式⼀定选择pom,具体内容如下:
1<?xml version="1.0" encoding="UTF-8"?>
2<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"
3    xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">
4<modelVersion>4.0.0</modelVersion>
5
6<groupId>com.sharp</groupId>
7<artifactId>sharp-pom</artifactId>
8<version>0.0.1-SNAPSHOT</version>
9<packaging>pom</packaging>
10
11<name>sharp-pom</name>
12<description>Demo project for Spring Boot</description>
13
14<parent>
15<groupId>org.springframework.boot</groupId>
16<artifactId>spring-boot-starter-parent</artifactId>
17<version>2.1.0.RELEASE</version>
18<relativePath/>
19</parent>
20
21<properties>
22<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
23&porting.outputEncoding>UTF-8</porting.outputEncoding>
24<project.version>0.0.1-SNAPSHOT</project.version>
25<java.version>1.8</java.version>
26<mysql.version>8.0.12</mysql.version>
27<mybatis.spring.version>1.3.2</mybatis.spring.version>
28<jdbc.version>5.1.1.RELEASE</jdbc.version>
29<druid.version>1.1.10</druid.version>
30<skipTests>true</skipTests>
30<skipTests>true</skipTests>
31</properties>
32<!-- dependencies即使在⼦项⽬中不写该依赖项,那么⼦项⽬仍然会从⽗项⽬中继承该依赖项(全部继承)dependencyManagement⾥只是声明依赖,并不实现引⼊,
33因此⼦项⽬需要显⽰的声明需要⽤的依赖。如果不在⼦项⽬中声明依赖,是不会从⽗项⽬中继承下来的;只有在⼦项⽬中写了该依赖项,并且没有指定具体版本,才会
34从⽗项⽬中继承该项,并且version和scope都读取⾃⽗pom;另外如果⼦项⽬中指定了版本号,那么会使⽤⼦项⽬中指定的jar版本。  -->
35<!-- 这⾥只是声明,⼦项⽬中⽤到时候应⽤不需要再次引⼊版本号,统⼀在此管理了版本 -->
36<dependencyManagement>
37<dependencies>
38<dependency>
39<groupId>com.alibaba</groupId>
40<artifactId>druid</artifactId>
41<version>${druid.version}</version>
42</dependency>
43<dependency>
44<groupId>org.springframework</groupId>
45<artifactId>spring-jdbc</artifactId>
46<version>${jdbc.version}</version>
47</dependency>
48<dependency>
49<groupId>mysql</groupId>
50<artifactId>mysql-connector-java</artifactId>
51<version>${mysql.version}</version>
52</dependency>
53<dependency>
54<groupId&batis.spring.boot</groupId>
55<artifactId>mybatis-spring-boot-starter</artifactId>
56<version>${mybatis.spring.version}</version>
57</dependency>
58</dependencies>
59<!-- 私服配置,⼦项⽬继承后不需要在⼦项⽬中配置 -->
60</dependencyManagement>
61<distributionManagement>
62<repository>
63<id>my-release</id>
64<url>192.168.135.128:8081/repository/maven-releases/</url>
65</repository>
66<snapshotRepository>
67<id>my-snapshots</id>
68<url>192.168.135.128:8081/repository/maven-snapshots/</url>
69</snapshotRepository>
70</distributionManagement>
71</project>
View Code
接下来的common、entity、mapper三个项⽬主要作为后⾯的依赖包均不需要启动类和测试类,都可以直接⼲掉,其中mapper有配置⽂件故⽽也要保留src/main/resources⽬录,其他两项只需要保留src/main/java即可,这些项⽬打包后是⼀个很普通的jar包,所以pom中不需要引⼊maven的打包插件,如果引⼊的话启动会报错。。。java:[1,17] 不到符号、程序包。。。不存在之类的,因为只是⼀个普通包,我们直接把它⼲掉就⾏
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.6</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
  然后层层依赖,没有什么特别的,需要注意的是,⾮微服务的多模块,controller层直接依赖service
层,所以service层不需要启动,service层也可以直接搞成如common、entity⼀样的结构,只是⼀个普通的依赖包即可,如果是作为微服务的⼀个服务,那么它要想注册中⼼注册,就需要在该项⽬进⾏相关数据库、mybatis及dubbo、zookeeper等的配置,现在这⼀步我们只是作为⼀个普通jar包依赖,故⽽相关数据库等的配置都在访问层进⾏即在sharp-user项⽬中进⾏配置。
common项⽬pom,除了pom暂时⽆其他内容
5
6<parent>
7<groupId>com.sharp</groupId>
8<artifactId>sharp-pom</artifactId>
9<version>0.0.1-SNAPSHOT</version>
10</parent>
11<artifactId>sharp-common</artifactId>
12<packaging>jar</packaging>
13
14<name>sharp-common</name>
15<description>公共模块</description>
16
17
18<dependencies>
19<dependency>
20<groupId>org.springframework.boot</groupId>
21<artifactId>spring-boot-starter</artifactId>
22</dependency>
23
24<dependency>
25<groupId>org.springframework.boot</groupId>
26<artifactId>spring-boot-starter-test</artifactId>
27<scope>test</scope>
28</dependency>
29</dependencies>
30<!--  <build>
31      <plugins>
32        <plugin>
33            <groupId>org.springframework.boot</groupId>
34            <artifactId>spring-boot-maven-plugin</artifactId>
35        </plugin>
36        <plugin>
37            <groupId>org.apache.maven.plugins</groupId>
38            <artifactId>maven-surefire-plugin</artifactId>
39            <version>2.6</version>
40            <configuration>
41            <skipTests>true</skipTests>
42            </configuration>
43            </plugin>
44      </plugins>
45  </build> -->
46</project>
View Code
entity pom
<parent>
<groupId>com.sharp</groupId>
<artifactId>sharp-pom</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>sharp-entity</artifactId>
springboot框架的作用<packaging>jar</packaging>
<name>sharp-entity</name>
<description>Demo project for Spring Boot</description>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sharp</groupId>
<artifactId>sharp-common</artifactId>
<version>${project.parent.version}</version>
</dependency>
</dependencies>
<!-- <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>                <executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-surefire-plugin</artifactId>
<version>2.6</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
-->
</project>
View Code
mapper项⽬⽆特别之处

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。