1 在父工程下的pom.xml裡面引入相關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.mycloud.cloud</groupId>
<artifactId>mycloud</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>mycloud-common</module>
<module>mycloud-oauth</module>
<module>mycloud-gateway</module>
<module>mycloud-plugin</module>
<module>mycloud-service</module>
</modules>
<properties>
<!-- jdk版本1.8 -->
<java.version>1.8</java.version>
<!-- maven-compiler-plugin插件版本,Java代碼編譯 -->
<maven.plugin.version>3.8.1</maven.plugin.version>
<!-- maven編譯時指定編碼UTF-8 -->
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<!-- 項目統一字元集編碼UTF-8 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 項目統一字元集編碼UTF-8 -->
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- 項目統一設定版本号 -->
<gitegg.project.version>1.0-SNAPSHOT</gitegg.project.version>
<!-- SpringBoot版本号 -->
<spring.boot.version>2.3.3.RELEASE</spring.boot.version>
<!-- SpringCloud版本号 -->
<spring.cloud.version>Hoxton.SR8</spring.cloud.version>
<!-- SpringPlatform版本号 -->
<spring.platform.version>Cairo-SR8</spring.platform.version>
<!-- mysql資料庫驅動 -->
<mysql.connector.version>8.0.17</mysql.connector.version>
<!-- postgresql資料庫驅動 -->
<postgresql.connector.version>9.1-901.jdbc4</postgresql.connector.version>
<!-- 資料庫連接配接池Druid -->
<druid.version>1.1.23</druid.version>
<!-- Mybatis Plus增強工具 -->
<mybatis.plus.version>3.4.0</mybatis.plus.version>
</properties>
<dependencies>
<!-- Lombok 通過簡單注解消除冗長代碼 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!-- mysql資料庫驅動 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
</dependency>
<!-- postgresql資料庫驅動 -->
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${postgresql.connector.version}</version>
</dependency>
<!-- 資料庫連接配接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- Mybatis Plus增強工具 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<!-- spring boot工程的依賴庫,無需繼承spring-boot-starter-parent -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring cloud工程的依賴庫 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<finalName>${project.name}</finalName>
<!--資源目錄 -->
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
<!-- pluginManagement 下的 plugins 下的 plugin 則僅僅是一種聲明,子項目中可以對 pluginManagement
下的 plugin 進行資訊的選擇、繼承、覆寫等。-->
<pluginManagement>
<plugins>
<!-- 能夠将Spring Boot應用打包為可執行的jar或war檔案,然後以通常的方式運作Spring Boot應用 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<configuration>
<fork>true</fork>
<finalName>${project.build.finalName}</finalName>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<!-- 能夠将Spring Boot應用打包為可執行的jar或war檔案,然後以通常的方式運作Spring Boot應用 -->
<!--<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>-->
<!-- 設定maven插件 并且指定jdk版本 -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.plugin.version}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>UTF-8</encoding>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
<!--配置maven項目的遠端倉庫-->
<repositories>
<repository>
<id>aliyun-repos</id>
<url>https://maven.aliyun.com/nexus/content/groups/public/</url>
<!--禁止下載下傳snapshot版本的構件-->
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>mycloud-release</id>
<name>Release Repository</name>
<url>https://packages.aliyun.com/maven/repository/2020515-release-dpxo1j/</url>
</repository>
</repositories>
<!--配置maven插件倉庫-->
<pluginRepositories>
<pluginRepository>
<id>aliyun-plugin</id>
<url>https://maven.aliyun.com/nexus/content/groups/public/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<!--環境配置-->
<profiles>
<profile>
<id>dev</id>
<properties>
<profileActive>dev</profileActive>
</properties>
<activation>
<!--預設為dev環境打包方式-->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<profileActive>test</profileActive>
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<profileActive>pro</profileActive>
</properties>
</profile>
</profiles>
</project>
2 common工程引入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">
<parent>
<artifactId>mycloud</artifactId>
<groupId>com.mycloud.cloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mycloud-common</artifactId>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
</dependencies>
</project>
3 common打包
問題:common打包時報錯
repackage failed: Unable to find main class 工具包打包的時候不應該有maven的依賴,去掉pom檔案中的這個插件就可以了

去掉依賴,打包成功
4 service工程引入common工程
問題1 src.main.java目錄總是自動變為resource類型,原因是父工程pom檔案中
這段配置引起,去除就好了
問題2 mapper通路報錯 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
發現是
4、建立GitEggSystemApplication主啟動類:
package com.gitegg.service.system;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* gitegg-system 啟動類
*/
@SpringBootApplication
public class GitEggSystemApplication {
public static void main(String[] args) {
SpringApplication.run(GitEggSystemApplication.class,args);
}
}
server:
port: 8001
spring:
application:
name: gitegg-service-system
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1/gitegg_cloud?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true
username: root
password: root
initialSize: 1
minIdle: 3
maxActive: 20
# 配置擷取連接配接等待逾時的時間
maxWait: 60000
# 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接配接,機關是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一個連接配接在池中最小生存的時間,機關是毫秒
minEvictableIdleTimeMillis: 30000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打開PSCache,并且指定每個連接配接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置監控統計攔截的filters,去掉後監控界面sql無法統計,'wall'用于防火牆
filters: config,stat,slf4j
# 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000;
# 合并多個DruidDataSource的監控資料
useGlobalDataSourceStat: true
mybatis-plus:
mapper-locations: classpath*:/com/gitegg/*/*/mapper/*Mapper.xml
typeAliasesPackage: com.gitegg.*.*.entity
global-config:
#主鍵類型 0:"資料庫ID自增", 1:"使用者輸入ID",2:"全局唯一ID (數字類型唯一ID)", 3:"全局唯一ID UUID";
id-type: 2
#字段政策 0:"忽略判斷",1:"非 NULL 判斷"),2:"非空判斷"
field-strategy: 2
#駝峰下劃線轉換
db-column-underline: true
#重新整理mapper 調試神器
refresh-mapper: true
#資料庫大寫下劃線轉換
#capital-mode: true
#邏輯删除配置
logic-delete-value: 1
logic-not-delete-value: 0
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
package com.gitegg.platform.mybatis.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("com.gitegg.**.mapper.**")
public class MybatisPlusConfig {
/**
* 新的分頁插件,一緩和二緩遵循mybatis的規則,需要設定 MybatisConfiguration#useDeprecatedExecutor = false
* 避免緩存出現問題(該屬性會在舊插件移除後一同移除)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}