简单场景举例

聚合工程创建示例

说明:

  • 创建 Maven Project:表示创建 maven 项目,new Project 方式创建
  • 创建 Maven Module:表示创建 maven 项目,new Module 方式创建
  • 创建 SpringBoot Module:表示创建 SpringBoot 项目,new Module 方式创建

注意:各个子工程的包名要保持一致

  1. 创建 Maven Project,命名 parent-project,删除 src 目录,pom 中添加 packing 标签,指定打包类型为 pom,此项目作为父工程,不写代码,做依赖管理。

  2. 在父工程 parent-project 下,创建 Maven Module,命名 common-project,此项目作为公共工程,写那些可复用的代码功能,打包安装后供其他子工程模块复用。

    说明:在公共工程中书写代码后,使用侧边栏 maven 管理 Lifecycle 中 install 命令进行打包安装,在其他子工程中直接添加该公共工程的依赖即可复用其中的代码功能。

  3. 在父工程 parent-project 下,创建 SpringBoot Module,命名 a-project,此项目作为子工程,写功能代码,同时,可复用公共工程 common-project。(子模块 pom 中添加公共模块依赖坐标即可在工程中复用功能代码)

    说明:

    创建 SpringBoot 项目时,项目 pom 中可能会有指向 spring-boot-starter-parent 的父依赖存在,也可能没有。

    详细参考:https://blog.51cto.com/u_15692960/5405687

    子工程 pom 整理说明

    1. 如果创建的子工程有 parent 标签且继承的是 spring-boot-starter-parent,则直接将其剪切到父工程中;

      <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.6.6</version>
      </parent>

      如果创建的子工程没有 parent 标签继承的 spring-boot-starter-parent,则代表项目本身已做相关配置,不需要该父依赖,不需要做其他处理,此步骤忽略!

      注意:有无 parent 标签可能是 SpringBoot 项目创建的方式不同(国内和国外方式)

    2. 将 common-project 中 parent 标签(含父工程坐标)复制一份到本子工程中【也就是添加父依赖,继承父工程】

    3. 删除自己的 groupId 和 version

    4. 确保父工程 pom 的 modules 中有本子模块,没有则手动添加

    5. 将子工程中公共的配置挪到父工程中,如需要交给父工程管理的依赖、一些 properties 以及 build 等公共配置

    PS:其他子工程如 b-project 和 c-project 的创建和整理步骤同 a-project。

  4. 以上,聚合工程创建完成。

以下展示聚合工程各工程模块中 pom 示例:

【实际开发,接口应用子工程创建一个 SpringBoot 项目即可,其他公共子工程皆使用 maven 创建】

目录总览:(实际开发应该是父工程下多个公共工程,一个应用接口启动工程)

  • parent-project:父工程
  • common-project:公共工程
  • a-project:子工程 a
  • b-project:子工程 b
  • c-project:子工程 c

parent-project 的 pom.xml:

<?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> <!-- 有教程有,有教程没有,看是否能正常启动再决定是否添加 -->
<!--<parent>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-parent</artifactId>-->
<!-- <version>2.6.6</version>-->
<!--</parent>--> <!-- 父工程坐标 -->
<groupId>com.luis</groupId>
<artifactId>parent-project</artifactId>
<version>1.0.0</version> <!-- 必须 -->
<packaging>pom</packaging> <!-- 子模块 -->
<modules>
<module>common-project</module>
<module>a-project</module>
<module>b-project</module>
<module>c-project</module>
</modules> <!-- 设置相关属性 -->
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
</properties> <!-- 公共依赖 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies> <!-- 依赖管理,配置对应 jar 包版本-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement> <!-- 相关插件 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.7.RELEASE</version>
<configuration>
<mainClass>com.luis.AProjectApplication</mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build> </project>

common-project 的 pom.xml:

<?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>parent-project</artifactId>
<groupId>com.luis</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>common-project</artifactId> </project>

a-project 的 pom.xml:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- 继承父工程 -->
<parent>
<artifactId>parent-project</artifactId>
<groupId>com.luis</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>a-project</artifactId> <dependencies>
<!-- common-project 依赖-->
<dependency>
<groupId>com.luis</groupId>
<artifactId>common-project</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies> </project>

b-project 的 pom.xml:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- 继承父工程 -->
<parent>
<artifactId>parent-project</artifactId>
<groupId>com.luis</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>b-project</artifactId> <dependencies>
<!-- common-project 依赖-->
<dependency>
<groupId>com.luis</groupId>
<artifactId>common-project</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies> </project>

c-project 的 pom.xml:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- 继承父工程 -->
<parent>
<artifactId>parent-project</artifactId>
<groupId>com.luis</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>c-project</artifactId> <dependencies>
<!-- common-project 依赖-->
<dependency>
<groupId>com.luis</groupId>
<artifactId>common-project</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies> </project>

其他说明

  • 注意:各个子工程的包名要保持一致

  • 在父工程 pom 的 dependencies 标签中添加的依赖,在其所有子工程中都有,而且和父工程依赖的版本完全一致。

  • 在父工程 pom 的 dependencyManagement 标签中添加的依赖,子工程中默认是没有的。

    但是,如果子工程中需要使用,则直接在其 dependencies 标签中添加即可,此时可不指定版本号,默认使用的是父类中指定的版本号。

    若子工程不想使用父类中指定的版本号,则自己需要明确指定所用依赖的版本号。

  • 父工程的标志:pom 中存在 modules 和 packing 标签,且 packaging 标签中打包类型必须为 pom。

  • 子工程的标志:pom 中 存在 parent 标签,且标签内坐标指向父工程。

dependencyManagement 和 dependencies 组件区别:

  • dependencyManagement 组件用来申明依赖,但不导入;dependencies 组件用于导入依赖
  • 子项目不会继承 dependencyManagement 组件中声明的依赖,但如果子项目想导入某个父 pom 中 dependencyManagement 中的依赖,只需要填写 groupId 和 artifactId,不需要填写版本号,maven 会自动去父 pom 的 dependencyManagement 中找对应的 version,包括scope、exclusions 等

附实际开发案例参考

聚合工程案例各模块草图

fmmall 聚合工程项目各模块以及依赖管理一览图:

项目模块目录:

模块说明

父工程模块:fmmal

子工程模块:common、beans、mapper、service、api

注意:以上所有工程模块,除 api 是创建的 SpringBoot 项目,其他模块都是创建的 maven 项目。

聚合工程中的子工程,除了接口工程(需要启动运行)需要创建为 SpringBoot 工程外,其他工程一般创建为 maven 工程,为接口工程提供复用服务。(如 common、beans、mapper、service 等此类工程)

依赖配置说明

  1. 所有子工程都要求有的依赖:在父工程 pom 的 dependencies 公共依赖中添加
  2. 多个子工程需要相同的依赖:在父工程 pom 的 dependencyManagement 依赖管理中添加,然后在需要依赖的子工程中自行添加(不用指定版本号),让父工程做统一的依赖版本管理
  3. 子工程单独需要的依赖:则直接在其 pom 中自行添加即可

依赖传递:B 依赖 C,A 又依赖 B,则 A 也依赖 C。(C 有的,A 也会有)

关于聚合工程 install 问题

因为是聚合工程,所以一定存在工程之间互相依赖;而被依赖的工程通常是需要打包后才可供给其他工程使用的。

在开发环境中,虽然我们直接运行启动类也可正常调用相关代码服务,但是我们一般会先将父工程 install一下,保证所有子工程都可正常打包后,再运行接口启动类运行项目。

基于以上说明,如果父工程 install 出现问题,如提示“程序包xxx不存在,找不到符号”,可参考以下解决办法:

原因分析:

项目 build 过程出现问题,个人估计一般这种情况就是依赖问题,pom.xml 中导入有问题,有可能是 springboot 自身的编译插件 spring-boot-maven-plugin 导致的。

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

解决方案:

不要将此插件放到顶级父工程中,在需要打成可执行 jar 的地方添加就好,如果是需要被依赖的,就不要添加此插件!

分析:结合此聚合案例,我们需要将此插件放到 api 接口工程中,它不是顶级工程,它不需要被依赖,它需要打成可执行 jar!

聚合工程各 pom.xml 示例

ffmall 父工程的 pom.xml
<?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> <!-- 看情况添加 -->
<!--<parent>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-parent</artifactId>-->
<!-- <version>2.6.6</version>-->
<!--</parent>--> <!-- 父工程坐标 -->
<groupId>com.luis</groupId>
<artifactId>fmmall</artifactId>
<version>2.0.1</version> <!-- 打包类型为pom,必须!-->
<packaging>pom</packaging> <!-- 子模块 -->
<modules>
<module>common</module>
<module>beans</module>
<module>mapper</module>
<module>service</module>
<module>api</module>
</modules> <!-- 设置相关属性 -->
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
</properties> <!-- 公共依赖 -->
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--<dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-test</artifactId>-->
<!-- <scope>test</scope>-->
<!-- <exclusions>-->
<!-- <exclusion>-->
<!-- <groupId>org.junit.vintage</groupId>-->
<!-- <artifactId>junit-vintage-engine</artifactId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
<!--</dependency>-->
</dependencies> <!-- 依赖管理,配置对应 jar 包版本-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement> <!--不要将此插件放到顶级父工程中,在需要打成可执行jar的地方添加就好了,如果是需要被依赖的,就不要添加此插件-->
<!--<build>-->
<!-- <plugins>-->
<!-- <plugin>-->
<!-- <groupId>org.apache.maven.plugins</groupId>-->
<!-- <artifactId>maven-compiler-plugin</artifactId>-->
<!-- <version>3.8.1</version>-->
<!-- <configuration>-->
<!-- <source>1.8</source>-->
<!-- <target>1.8</target>-->
<!-- <encoding>UTF-8</encoding>-->
<!-- </configuration>-->
<!-- </plugin>-->
<!-- <plugin>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-maven-plugin</artifactId>-->
<!-- <version>2.3.7.RELEASE</version>-->
<!-- <configuration>-->
<!-- <mainClass>com.luis.fmmall.ApiApplication</mainClass>-->
<!-- </configuration>-->
<!-- <executions>-->
<!-- <execution>-->
<!-- <id>repackage</id>-->
<!-- <goals>-->
<!-- <goal>repackage</goal>-->
<!-- </goals>-->
<!-- </execution>-->
<!-- </executions>-->
<!-- </plugin>-->
<!-- </plugins>-->
<!--</build>--> </project>
common 子工程的 pom.xml
<?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>fmmall</artifactId>
<groupId>com.luis</groupId>
<version>2.0.1</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>common</artifactId>
<!-- 不指定默认也是 jar -->
<packaging>jar</packaging> </project>
beans 子工程的 pom.xml
<?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>fmmall</artifactId>
<groupId>com.luis</groupId>
<version>2.0.1</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>beans</artifactId>
<!-- 不指定默认也是 jar -->
<packaging>jar</packaging> </project>
mapper 子工程的 pom
<?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>fmmall</artifactId>
<groupId>com.luis</groupId>
<version>2.0.1</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>mapper</artifactId>
<!-- 不指定默认也是 jar -->
<!--<packaging>jar</packaging>--> <dependencies>
<!-- beans -->
<dependency>
<groupId>com.luis</groupId>
<artifactId>beans</artifactId>
<version>2.0.1</version>
</dependency> <!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<!-- spring-boot-starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.4.4</version>
</dependency>
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.9</version>
</dependency>
<!-- test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.4.4</version>
</dependency>
<!-- junit 单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies> </project>
service 子工程的 pom
<?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>fmmall</artifactId>
<groupId>com.luis</groupId>
<version>2.0.1</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>service</artifactId>
<!-- 不指定默认也是 jar -->
<!--<packaging>jar</packaging>--> <dependencies>
<!-- mapper -->
<dependency>
<groupId>com.luis</groupId>
<artifactId>mapper</artifactId>
<version>2.0.1</version>
</dependency>
<!-- common 需要用到 vo,utils,封装数据传参到前端以及工具类 -->
<dependency>
<groupId>com.luis</groupId>
<artifactId>common</artifactId>
<version>2.0.1</version>
</dependency>
</dependencies> </project>
api 子工程的 pom
<?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
https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- 父工程信息 -->
<parent>
<groupId>com.luis</groupId>
<artifactId>fmmall</artifactId>
<version>2.0.1</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>api</artifactId> <!-- 依赖配置 -->
<dependencies>
<!-- service -->
<dependency>
<groupId>com.luis</groupId>
<artifactId>service</artifactId>
<version>2.0.1</version>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies> <!--不要将此插件放到顶级父工程中,在需要打成可执行jar的地方添加就好了,如果是需要被依赖的,就不要添加此插件-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.7.RELEASE</version>
<configuration>
<mainClass>com.luis.fmmall.ApiApplication</mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build> </project>

Maven 聚合工程的创建的更多相关文章

  1. 使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化

    一.创建一个空的项目作为存放整个项目的路径 1.选择 File——>new——>Project ——>Empty Project 2.WorkspaceforTest为项目存放文件夹 ...

  2. 【转载】使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化

    一.创建一个空的项目作为存放整个项目的路径 1.选择 File——>new——>Project ——>Empty Project 2.WorkspaceforTest为项目存放文件夹 ...

  3. maven 聚合工程的创建和打包

    ---恢复内容开始--- 使用eclipse创建maven项目 第一步:创建父工程hg-parent,如图; 右击空白处,new创建新maven工程: 搜索maven项目 父工程使用pom打包方式 第 ...

  4. maven 聚合工程 用spring boot 搭建 spring cloud 微服务 模块式开发项目

    项目的简单介绍: 项目采用maven聚合工程 用spring boot 搭建 spring cloud的微服务 模块式开发 项目的截图: 搭建开始: 能上图 我少打字 1.首先搭建maven的聚合工程 ...

  5. Maven 聚合工程

    第一步: 创建Maven聚合工程: 父工程Maven工程的打包方式必须为pom 创建一个Maven工程 修改父工程的pom.xml,设置打包方式为pom <?xml version=" ...

  6. maven聚合工程无法install

    对于maven聚合工程,有时候执行maven命令进行mvn clean install时会出一些莫名奇妙的错误: 一直报告找不到符号,仔细看了项目源代码也不知道是什么原因.首先确保项目所在路径为英文路 ...

  7. maven聚合工程使用如何debug

    maven聚合工程在正常情况下,使用debug时会出错,因为没有源码,就不会显示代码和断点行数条. 进行如下操作: 默认情况下source下只有默认的default文件夹,点击remove进行删除(这 ...

  8. Maven聚合工程怎么变回普通的Maven工程

    问题 Maven聚合工程的父工程的packaging是pom,如果我们将其改为jar,会立刻报错: Project build error: 'packaging' with value 'jar' ...

  9. maven 聚合工程 > 坑总结

    maven聚合工程子项目无法构建:父工程未 install tomcat可以运行,maven 无法编译报错,检查是否添加红色语句: <dependency> <groupId> ...

随机推荐

  1. 以太坊 layer2: optimism 源码学习(二) 提现原理

    作者:林冠宏 / 指尖下的幽灵.转载者,请: 务必标明出处. 掘金:https://juejin.im/user/1785262612681997 博客:http://www.cnblogs.com/ ...

  2. 【JDBC】学习路径5-提取JDBCUtils工具类

    回顾我们上面几节的内容,我们发现重复代码非常多,比如注册驱动.连接.关闭close()等代码,非常繁杂. 于是我们将这些重复的大段代码进行包装.提取成JDBCUtils工具类. 第一章:提取注册连接模 ...

  3. 一 策略模式 来自CBF4LIFE 的设计模式

    刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题,嘿,还别说,真是解决了大问题,搞到后是周瑜陪了夫人又折兵呀,那咱们先看看这个场景是什么样子的. 先说这个场景中 ...

  4. 使用VS Code 搭建 platformio 平台

    一.需要的资源网站 arduino GitHub:https://github.com/arduino espressif GitHub:https://github.com/espressif pl ...

  5. Springboot连接数据库(解决报错2)

    好家伙, 新建项目,不出意外的话总是会出点意外的 第一天正常运行,第二天就炸了. 1.看报错 百度一下找解决方案 试着将 application.properties中的 com.mysql.jdbc ...

  6. 【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?

    问题描述 在使用Azure Spring Cloud服务时,如果要收集应用程序的日志.有控制台输出(实时流日志),也可以配置Log Analytics服务. 日志流式处理 可以通过以下命令在 Azur ...

  7. Python入门系列(十)一篇学会python文件处理

    文件处理 在Python中处理文件的关键函数是open()函数.有四种不同的方法(模式)来打开一个文件 "r" - 读取 - 默认值.打开一个文件进行读取,如果文件不存在则出错. ...

  8. JavaWeb核心篇(2)——Request和Response

    JavaWeb核心篇(2)--Request和Response 上篇文章中提及到了Servlet,在Servlet中我们主要继承了HTTPServlet类,在HTTPServlet类中我们会接触到两个 ...

  9. idea每次换行后光标都跑到最左边问题

    最进用idea时发现每次换行之后一段时间光标会自动跑到最左边,默认把我的首行空格删掉了 IDEA版本为:IntelliJ IDEA 2020.2.3 x64

  10. 面试突击82:SpringBoot 中如何操作事务?

    在 Spring Boot 中操作事务有两种方式:编程式事务或声明式事务,接下来我们一起来看二者的具体实现. 1.编程式事务 在 Spring Boot 中实现编程式事务又有两种实现方法: 使用 Tr ...