程序员刘杨

———没有写不出的程序,只有不努力的程序员。

2019年06月11日   码农之路   1,836 次浏览

祝大家新年快乐,有任何问题可与我联系:点击这里给我发消息

有这样一个需求,有两个可以独立部署的SpringBoot项目A和B,遇到下面这些场景:

  • A和B需要合并成一个工程部署
  • A需要引用B中service层的功能,反之亦然

因为A和B两个项目是两个不同的团队在维护,所以不要说什么把公用的部分独立成jar包,这样不现实。

下面来讲下我在项目中是怎么解决这个问题的,分war包引用和jar包引用两种方式,两种方式各有优缺点,关键看能不能满足项目的需求:

一、war包引用pom配置

1、A项目的pom配置(以下只列出了关键部分)

	<dependencies>
		<!-- 这里引用B项目的war包 -->
		<dependency>
			<groupId>cn.yyjjssnn</groupId>
			<artifactId>B</artifactId>
			<version>1.0</version>
			<type>war</type>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<!-- 需要删除B项目的Application文件,否则项目会启动两次 -->
			<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<configuration>
					<packagingExcludes>
						%regex[WEB-INF/classes/cn/yyjjssnn/Application(?!A).*],
						%regex[WEB-INF/classes/cn/yyjjssnn/ServletInitializer(?!A).*]
					</packagingExcludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

二、jar包引用pom配置

1、首先我们需要修改B项目的pom配置,以打包出满足要求的jar包(以下只列出了关键部分)

	<build>
		<plugins>
			<!-- 打包jar给其他项目使用 -->
			<plugin>
				<artifactId>maven-jar-plugin</artifactId>
				<configuration>
					<!-- 排除不需要打包的文件 -->
					<excludes>
						<exclude>application-druid.yml</exclude>
						<exclude>application.yml</exclude>
						<exclude>logback.xml</exclude>
						<exclude>cn/yyjjssnn/ApplicationB.*</exclude>
						<exclude>cn/yyjjssnn/ServletInitializerB.*</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

2、A项目的pom配置(以下只列出了关键部分)

	<dependencies>
		<!-- 这里引用B项目的jar包 -->
		<dependency>
			<groupId>cn.yyjjssnn</groupId>
			<artifactId>B</artifactId>
			<version>1.0</version>
		</dependency>
	</dependencies>

好了,这样配置后A项目就能引用或使用B项目的功能了,需要注意的一点,就是当B项目有改动时,需要B项目重新打包或者重新发布给A项目使用。

赞 赏
申明:除非注明,本站文章均为原创,转载请以链接形式标明本文地址。 如有问题,请于一周内与本站联系,本站将在第一时间对相关内容进行处理。
本文地址: http://www.yyjjssnn.cn/articles/851.html

>>> Hello World <<<

这篇内容是否帮助到你了呢?

如果你有任何疑问或有建议留给其他朋友,都可以给我留言。

:wink: :twisted: :surprised: :smile: :smile9: :smile8: :smile7: :smile6: :smile5: :smile56: :smile55: :smile54: :smile53: :smile52: :smile51: :smile50: :smile4: :smile49: :smile48: :smile47: :smile46: :smile45: :smile44: :smile43: :smile42: :smile41: :smile40: :smile3: :smile39: :smile38: :smile37: :smile36: :smile35: :smile34: :smile33: :smile32: :smile31: :smile30: :smile2: :smile29: :smile28: :smile27: :smile26: :smile25: :smile24: :smile23: :smile22: :smile21: :smile20: :smile1: :smile19: :smile18: :smile17: :smile16: :smile15: :smile14: :smile13: :smile12: :smile11: :smile10: :smile0: :sad: :rolleyes1: :redface: :razz: :question: :neutral: :mrgreen: :mad: :lol: :idea: :exclaim: :evil: :eek: :cry: :cool: :confused: :biggrin: :arrow:

友情链接: 程序员刘杨 刘杨
Copyright 2003~2018 保留所有权利 | 网站地图
备案号:湘ICP备14001005号-2

湘公网安备 43011102001322号