idea maven 项目融合

背景

:项目A 和项目B 是两个独立的多模块项目,项目A 和项目B ,均为独立的数据源 。其中项目B 有两个数据原。 需要将项目B 以多模块的方式融合进项目A。
解决版本。建立项目C,只含有pom的,空项目,项目A和项目B做为多模块引入。其中项目B的启动类某块排除掉,只包含项目B的业务快块模块。

融合前后项目结构

融合前A 项目

在这里插入图片描述

融合前B 项目结构

在这里插入图片描述

融合后的项目C结构
在这里插入图片描述

步骤

1. 在gitLab 创建C项目代码仓库,并下载到本地(或者在本地创建项目空项maven目后在同步gitLab也可以)

2. 将项目A、B文件夹复制至项目C

3. 导入项目A、B的项目modul

4. 修改项目的modul 父子关系

C项目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><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><modelVersion>4.0.0</modelVersion><groupId>C</groupId><artifactId>avicit-vpdm</artifactId><version>1.0</version><packaging>pom</packaging><properties><vvv.version>cfcustom-2.0.3-SNAPSHOT</platform6.version><!--平台版本--><spring-boot.version>2.1.3.RELEASE</spring-boot.version><!--springboot版本--><java-source.version>8</java-source.version><!--jdk版本--><java-target.version>8</java-target.version><!--jdk版本--></properties><modules><module>A</module><module>B</module></modules><repositories><repository><id>xxx</id><name>xxx</name><url>http:/xxx/xxx/xxx/mvn-group/</url></repository></repositories>
</project>

A 项目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"><modelVersion>4.0.0</modelVersion><parent><groupId>C</groupId><artifactId>C</artifactId><version>1.0</version><relativePath/></parent><groupId>xxxx</groupId><artifactId>A</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><description>组件父工程</description><name>avicit-pdm</name><url>https://maven.aliyun.com/mvn/search</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>1.8</java.version>………………<prod.version>6.4.2</prod.version></properties><modules><module>A-api</module><module>A-pub</module><module>A-service</module><module>A-boot</module></modules><dependencyManagement>…………………………</dependencies></dependencyManagement><!-- Maven私服 --><repositories><repository><id>avic-public</id><name>avic-public</name><url>http://xxxx:9999/rxxxx/</url></repository></repositories>
</project>

配置说明
指定工程C的相对路径 默认为 …/pom.xml
A.service 工程配置说明

<?xml version="1.0"?>
<projectxsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><parent><groupId>xxx</groupId><artifactId>A</artifactId><version>0.0.1-SNAPSHOT</version><relativePath/></parent><artifactId>A-service</artifactId><description>组件的后台服务项目,提供组件的后台服务,包括rest、service、dao和mapper</description><name>avicit-pdm-service</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>avicit.platform6</groupId><artifactId>A-pub</artifactId><version>${component.version}</version></dependency></dependencies><build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources></build>
</project>

标签表示要将A-Service 模块下的资源文件也要打进包

A-pom.xml 配置

<?xml version="1.0"?>
<projectxsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><parent><groupId>xxx</groupId><artifactId>A</artifactId><version>0.0.1-SNAPSHOT</version><relativePath/></parent><artifactId>A-boot</artifactId><description>组件的后台服务启动工程</description><name>A-boot</name><url>http://maven.apache.org</url><profiles><!-- 开发环境配置 --><profile><id>dev</id><properties><profiles.active>dev</profiles.active></properties><!-- 默认激活该配置 --><activation><activeByDefault>true</activeByDefault></activation><build><resources><!-- 复制logback-spring.xml--><resource><directory>src/main/resources</directory><filtering>false</filtering><includes><include>logback-spring.xml</include></includes></resource></resources></build></profile></profiles><dependencies><dependency><groupId>xxxx</groupId><artifactId>A-service</artifactId><version>${component.version}</version><exclusions><exclusion><artifactId>spring-plugin-core</artifactId><groupId>org.springframework.plugin</groupId></exclusion></exclusions></dependency><dependency><groupId>xxxx</groupId><artifactId>B-order-service</artifactId><version>${component.version}</version><exclusions><exclusion><artifactId>spring-plugin-core</artifactId><groupId>org.springframework.plugin</groupId></exclusion></exclusions></dependency>……</dependencies><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass>A.Application</mainClass></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target></configuration></plugin><plugin><artifactId>maven-resources-plugin</artifactId><configuration><encoding>utf-8</encoding><useDefaultDelimiters>true</useDefaultDelimiters><nonFilteredFileExtensions><nonFilteredFileExtension>lrc</nonFilteredFileExtension><nonFilteredFileExtension>res</nonFilteredFileExtension></nonFilteredFileExtensions></configuration></plugin></plugins><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/resources</directory><includes><include>application-${profiles.active}.yml</include><include>application-common.yml</include></includes><filtering>false</filtering></resource><resource><directory>src/main/resources</directory><excludes><exclude>logback-spring.xml</exclude><exclude>bootstrap.yml</exclude><exclude>application*.yml</exclude><exclude>prod/*</exclude></excludes><filtering>false</filtering></resource><resource><directory>src/main/resources</directory><includes><include>application.yml</include></includes><filtering>true</filtering></resource></resources></build>
</project>
  1. A-boot作为项目的启动类,需要把B的业务代码需要导入进来,需要进入
xxxx B-order-service ${component.version} spring-plugin-core org.springframework.plugin 2.引入需要打进包的资源文件

3.需要指定打包的启动类入口
pring-boot-maven-plugin,一半只需要在打包的启动类中包含,不需要在别的modul模块包含

<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass>A.Application</mainClass></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target></configuration></plugin><plugin><artifactId>maven-resources-plugin</artifactId><configuration><encoding>utf-8</encoding><useDefaultDelimiters>true</useDefaultDelimiters><nonFilteredFileExtensions><nonFilteredFileExtension>lrc</nonFilteredFileExtension><nonFilteredFileExtension>res</nonFilteredFileExtension></nonFilteredFileExtensions></configuration></plugin>

打包有可能会包
SpringBoot 打包异常:Unable to find main class

问题原因:因为 pom 集成了 boot-parent,打包时,在没有指定 mainClass 入口时,会找所有子模块下的 main 方法,除去 web 目录下有之外,其他模块下面均没有,导致打包异常。

1、指定对应模块的 main 入口即可。
在这里插入图片描述

参考
https://blog.csdn.net/azhegps/article/details/98246273

B模块的pom结构同样配置如上,只不过B模块不需要引入B-boot

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/542006.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++_学习String

1.标准库中的string类 1. 字符串是表示字符序列的类 2. 标准的字符串类提供了对此类对象的支持&#xff0c;其接口类似于标准字符容器的接口&#xff0c;但添加了专门用于操作单字节字符字符串的设计特性 3. string 类是使用 char( 即作为它的字符类型&#xff0c;使用它的默…

MySQL—redo log、undo log以及MVCC

MySQL—redo log、undo log以及MVCC 首先回忆一下MySQL事务的四大特性&#xff1a;ACID&#xff0c;即原子性、一致性、隔离性和持久性。其中原子性、一致性、持久性实际上是由InnoDB中的两份日志保证的&#xff0c;一份是redo log日志&#xff0c;一份是undo log日志&#xff…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:List)

列表包含一系列相同宽度的列表项。适合连续、多行呈现同类数据&#xff0c;例如图片和文本。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。该组件内容区小于一屏时&#xff0c;默认没有回弹效果。…

16.WEB渗透测试--Kali Linux(四)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;15.WEB渗透测试--Kali Linux&#xff08;三&#xff09;-CSDN博客 1.crunch简介与使用 C…

构建通用机器人模型

构建通用机器人模型需要涉及到机器人的机械设计、控制系统设计以及相应的软件开发。这样的过程涉及到许多专业知识&#xff0c;包括机械工程、电子工程、计算机科学等。以下是一个简化的通用机器人模型构建过程&#xff1a; 定义机器人需求&#xff1a;首先&#xff0c;你需要…

【SRE系列之docker容器】--dockerfile镜像优化

dockerfile镜像优化 1.1 镜像优化方法 系统镜像采用ubuntu或者alpine&#xff0c;会比centos少1G左右编写业务镜像时从官网拉取镜像&#xff0c;其余配置根据业务需求再配置编写dockerfile时把不用的安装包卸载或者删除尽量减少run命令的使用&#xff08;一个run命令&#xf…

C. Arrow Path

思路&#xff1a;可以bfs来写&#xff0c;也可以用思维来解 代码&#xff1a;思维代码 void solve(){cin >> n;for(int i 0;i < 2;i )cin >> s[i];for(int i 0;i < 2;i ){// cout << s[i] << endl;for(int j 0;j < n;j ){if(i 0){if(((…

《雷德斯东家》 第一话——火把花的回忆

引子 温馨提示:本系列小说为福瑞向! ------------------------------------------------------------------------------------------------------------------------- 作者 RedstoneCuberoot 地图 RedstoneCuberoot、梓元sama 审核 Brenda_fyx、RedstoneCuberoot Minecraft大…

SoloX - Android/iOS性能数据实时采集工具

文章目录 一、简介二、环境要求三、安装部署四、使用方法4.1 通过浏览器直接使用4.2 使用Python收集4.3 使用API收集 一、简介 SoloX是一个可以实时收集Android/iOS性能数据的web工具。 快速定位分析性能问题&#xff0c;提升应用的性能和品质。 无需ROOT/越狱&#xff0c;即插…

Python - 应用篇 :ChatGPT +Pycharm 序列号自动生成

前言&#xff1a; 客户要求在产品外壳上新增可追溯的二维码贴花&#xff0c;二维码信息内容如下&#xff1a; 编码格式&#xff1a;SBD 零部件代码 控制盒序列号 控制盒厂家 例如&#xff1a;[)>06P725-18428S24031410001ZJL SBD 零部件代码&#xff1a;[)>06P725-184…

数据仓库的设计开发应用(一)

目录 一、数据仓库设计的特点二、数据仓库系统开发过程三、数据仓库系统的规划 一、数据仓库设计的特点 1、“数据驱动” 的设计 数据仓库是从已有数据出发的设计方法&#xff0c;即从数据源抽取数据&#xff0c;经转换形成面向主题&#xff0c;支持决策的数据集合。 以全面了…

「HarmonyOS」下拉刷新组件使用详情

前言&#xff1a;在客户端开发过程中&#xff0c;经常会出现下拉刷新的功能&#xff0c;用于重新加载数据和加载更多数据&#xff0c;通过查找相关资料&#xff0c;查找到一个refresh下拉刷新的第三方库&#xff0c;今天主要介绍一下其中比较常用的RefreshLayout形式下拉刷新使…