简单场景举例

聚合工程创建示例

说明:

  • 创建 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. C++ 炼气期之结构体

    1. 前言 随着计算机向着不同领域的延伸,数据的概念已经不仅局限于数值型数据,计算机需要处理大量的非数值.且复杂的类型数据. 为了能抽象地描述这些非数值.复杂类型的数据,C++引入了复合数据类型的概念 ...

  2. Linux—进程管理

    Linux 进程管理 1.进程管理介绍 1.1 什么是进程? 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础. 简而言之 ...

  3. Github文件在线加速下载

    众所周知,GitHub是一个巨大的开源宝库,以及程序员和编程爱好者的聚集地,诸多优秀的开源项目全部都是位于GitHub上.但是每当我们看到优秀的开源项目,准备去下(bai)载(piao)时,会发现速度 ...

  4. 刷题记录:Codeforces Round #731 (Div. 3)

    Codeforces Round #731 (Div. 3) 20210803.网址:https://codeforces.com/contest/1547. 感觉这次犯的低级错误有亿点多-- A 一 ...

  5. Queue-jumpers - 平衡树

    题面 Ponyo and Garfield are waiting outside the box-office for their favorite movie. Because queuing i ...

  6. 一次较波折的MySQL调优

    春节长假某日,阳光明媚,春暖花开,恰逢冬奥会开幕,想着一定是一个黄道吉日,必能顺风顺水.没想到却遇到一个有点小波折 的客户报障. 01故障起因 故障起因是客户前一天从自建MySQL迁移到云上RDS,在 ...

  7. javaee相关基础

    2020-2-28 java 学习 开始学习javaee了 瞎跳着看 今日内容 web相关概念 web服务器软件:Tomcat Servlet入门学习 web概念 软件架构 C/S:客户端/服务器端 ...

  8. v-if和v-for的优先级是什么?

    一.作用 v-if 指令用于条件性地渲染一块内容.这块内容只会在指令的表达式返回 true值的时候被渲染 v-for 指令基于一个数组来渲染一个列表.v-for 指令需要使用 item in item ...

  9. 【PMP学习笔记】第5章 项目范围管理

    一.规范管理的内涵 项目范围管理:包括确保项目做且只做所需的全部工作,以成功完成项目的各个过程. 项目范围:为交付具有规定特性与功能的产品.服务或成果而必须完成的工作. 预测型:开始时定义可交付成果, ...

  10. Hive数据仓库工具基本架构和入门部署详解

    @ 目录 概述 定义 本质 特点 Hive与Hadoop关系 Hive与关系型数据库区别 优缺点 其他说明 架构 组成部分 数据模型(Hive数据组织形式) Metastore(元数据) Compil ...