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>xxx-C</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>XXX-A</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>xxxxx-A-service</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>xxxx.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

relativePath 的用法

relativePath:
1)指定查找该父项目pom.xml的(相对)路径。默认顺序:relativePath > 本地仓库 > 远程仓库
2)没有relativePath标签等同…/pom.xml, 即默认从当前pom文件的上一级目录找
3)表示不从relativePath找, 直接从本地仓库找,找不到再从远程仓库找

关于2)经过测试,似乎 没有relativePath标签时,它没有从当前pom文件的上一级目录找,子模块继承不到父模块中dependencyManagement中包的version信息。

因此,强烈推荐,子模块配置relativePath元素,指定 …/pom.xml。

pom.xml中resouces标签

参考 :https://blog.csdn.net/qq_43501821/article/details/135588894

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

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

相关文章

RPM与DNF的操作实践

这几课有三个目标&#xff1a; 第一步&#xff1a;先配置软件源 跳转到yum.repos.d目录&#xff0c;用vim创建一个openeuler_x84_64.repo文件。这个文件就是我们将会用到的软件源。 我们在里面添加这些东西&#xff0c;保存并退出即可。 然后&#xff0c;我们用yum list all就…

阿里云发布 AI 编程助手 “通义灵码”——VSCode更强了 !!

文章目录 什么是 通义灵码&#xff08;TONGYI Lingma&#xff09; 快速体验“通义灵码” 什么是“通义灵码”&#xff08;TONGYI Lingma&#xff09; 通义灵码&#xff08;TONGYI Lingma&#xff09;&#xff0c;是阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff…

C语言字符函数和字符串函数以及内存函数(全是代码版):一篇文章让你秒懂基础!

JAMES别扣了-CSDN博客&#xff08;个人主页&#xff09; &#x1f495;在校大学生一枚。对IT有着极其浓厚的兴趣 ✨系列专栏目前为C语言初阶、后续会更新c语言的学习方法以及c题目分享. &#x1f60d;希望我的文章对大家有着不一样的帮助&#xff0c;欢迎大家关注我&#xff0c…

【Java常用API】正则表达式练习

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …

Excel新函数TEXTJOIN太强大了,这些高级用法太实用了

今天跟大家分享WPS中新函数TEXTJOIN的使用方法和技巧&#xff0c;它不仅仅是一个强大的文本连接函数&#xff0c;还有一些高级用法可以帮助我们快速解决日常难题。 TEXTJOIN函数介绍 作用&#xff1a;TEXTJOIN函数是文本连接函数&#xff0c;使用分隔符连接列表或文本字符串区…

【C++】手撕AVL树

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;能直接手撕AVL树。 > 毒鸡汤&#xff1a;放弃自…

数媒大厦会议中心 成都数字产业园示范基地

数媒大厦会议中心&#xff0c;位于成都市金牛区国际数字影像产业园3楼区域&#xff0c;这里也是成都数字产业园示范基地的核心区域。该成都文创产业园及辐射周边配套公园用地约500亩&#xff0c;涵盖产业实训空间、产业实验室、数字资产交易平台、产业集群发展空间、双创孵化空…

工业智能网关的功能特点、应用及其对企业产生的价值-天拓四方

一、工业智能网关的功能特点 工业智能网关是一种具备数据采集、传输、处理能力的智能设备&#xff0c;它能够将工业现场的各种传感器、执行器、控制器等设备连接起来&#xff0c;实现设备间的信息互通与协同工作。同时&#xff0c;工业智能网关还具备强大的数据处理能力&#…

PR是啥?一篇文章学会Pull Request到底是干嘛的

PR&#xff1f;Pull Request 概念 PR,全称Pull Request&#xff08;拉取请求&#xff09;&#xff0c;是一种非常重要的协作机制&#xff0c;它是 Git 和 GitHub 等代码托管平台中常见的功能。在开源项目中&#xff0c;Pull Request 被广泛用于参与社区贡献&#xff0c;从而促…

html--蝴蝶

<!DOCTYPE html> <html lang"en" > <head> <meta charset"UTF-8"> <title>蝴蝶飞舞</title> <link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.cs…

YOLOV5 改进:增加注意力机制模块(SE)

1、前言 本章将介绍yolov5的改进项目,为v5增加新的模块---注意力机制、SE模块 大部分更改的代码是重复的,只有少部分需要更改,下面会详细讲解 yolov5的yaml文件介绍:YOLOV5 模型:利用tensorboard查看网络结构和yaml文件介绍-CSDN博客 yolov5的模块更改,C3更改为C2f模块…

pgsql中按照逗号拆分成列

原始数据如下&#xff0c;要拆分dict_label字段&#xff1a; selectt_d.dict_sort,t_d.dict_label,t_d.dict_value from sys_dict_data t_d where t_d.dict_type qc_audit_type ORDER BY t_d.dict_sort 关键代码&#xff1a; split_part(t_d.dict_label,,,1) as mValue, sp…

递推算法C++

所谓递推&#xff0c;是指从已知的初始条件出发&#xff0c;依据某种递推关系&#xff0c;逐次推出所要求的各中间结果及最后结果。其中初始条件或是问题本身已经给定&#xff0c;或是通过对问题的分析与化简后确定。从已知条件出发逐步推到问题结果&#xff0c;此种方法叫顺推…

C++作业day6

编程1&#xff1a; 封装一个动物的基类&#xff0c;类中有私有成员&#xff1a;姓名&#xff0c;颜色&#xff0c;指针成员年纪 再封装一个狗这样类&#xff0c;共有继承于动物类&#xff0c;自己拓展的私有成员有&#xff1a;指针成员&#xff1a;腿的个数&#xff08;整型 …

从自动化到测开,测试人员逆袭之路从此起步!

在当今竞争激烈的软件测试行业中&#xff0c;近期的招聘市场确实面临一些挑战。大量的求职者争相涌入岗位&#xff0c;许多热衷于功能测试的人士甚至难以找到理想的工作机会。更不幸的是&#xff0c;连自动化测试和性能测试这些专业领域也受到了测试开发人员的竞争压力。然而&a…

stm32-模拟数字转化器ADC

接线图&#xff1a; #include "stm32f10x.h" // Device header//1: 开启RCC时钟&#xff0c;包括ADC和GPIO的时钟//2&#xff1a;配置GPIO将GPIO配置为模拟输入模式//3&#xff1a;配置多路开关将左边的通道接入到规则组中//4&#xff1a;配置ADC转…

北京市密云办理营业性演出许可所需材料及注意事项

尊敬的客户&#xff0c;您好&#xff01;我们是北京经典世纪集团有限公司&#xff0c;专注于资 质代办服务。在这篇文章中&#xff0c;我们将为您介绍一下在北京市密云地区办理营业性演出许可所需的材料及需要注意的事项。&#xff08;游览器搜经典世纪胡云帅&#xff09; 办理…

买堡垒机的企业主要目的是什么?哪家堡垒机好?

近几年企业越来越重视网络安全了&#xff0c;也越来越多的企业购买了堡垒机。但还有一些企业不知道堡垒机是什么&#xff0c;今天我们就来聊聊买堡垒机的企业主要目的是什么以及哪家堡垒机好。 买堡垒机的企业主要目的是什么&#xff1f; 一般买堡垒机的企业目的不外乎是这三个…

学习笔记Day11:初探Linux

Linux系统初探 Linux系统简介 发行版本Ubuntu/centOS&#xff0c;逻辑一样&#xff0c;都可以用。 服务器 本质是一台远程电脑&#xff0c;大多数服务器是Linux系统&#xff0c;通常使用命令行远程访问而不是桌面操作。LInux服务器允许多用户同时访问。NGS组学测序数据上游…

OSPF虚链路vlink

OSPF虚链路——vlink&#xff08;使得其他区域和骨干区域相连&#xff09; 虚链路&#xff1a;一定是跨越非骨干区域连接的 1、虚链路属于区域0的逻辑链路 2、虚链路只能穿越1个非骨干区域 3、虚链路不能穿越特殊区域&#xff1b; vlink在配置的时候&#xff0c;需要指对方…