当前位置:   article > 正文

Maven项目打包时需要提取引用Jar包的文件_maven copy jar resource

maven copy jar resource

项目场景:

SpringBoot微服务项目,A服务引入B服务的SDK,A服务需要调用B服务的方法,而B服务需要调用自己resource目录下的文件。


问题描述:

A服务打成镜像后,在调用A服务的接口(需要调用B服务的的方法读取文件)时系统报错,抛出找不到文件路径的异常。


原因分析:

A服务引入B服务,所以A服务的镜像下,B服务是以一个jar包的形式存在,所以项目启动的时候,在当前目录下找B服务目录下的文件是找不到的,所以系统会抛出异常。


解决方案:

增加打包的依赖,A服务打包的时候,需要从jar包中将B服务的文件拷贝到当前的路径下,然后启动A服务的时候可以通过添加启动参数的方式,来指定文件目录,从而使A服务可以读取到对应的文件。
maven具体配置如下:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-resources-plugin</artifactId>
	<version>2.6</version>
	<executions>
		<execution>
			<!-- 这个Key不需要改,是Maven中的命令 -->
			<id>copy-resources</id>
			<!-- 在default生命周期的validate阶段就执行resources插件的copy-resources目标 -->
			<phase>validate</phase>
			<goals>
				<goal>copy-resources</goal>
			</goals>
			<configuration>
				<!-- 指定resources插件处理资源文件复制到哪个目录下 -->
				<outputDirectory>${project.build.directory}/config</outputDirectory>
				 <!-- 待处理的资源定义 -->
				<resources>
					<resource>
					 	<!-- 指定resources插件处理哪个目录下的资源文件 -->
						<directory>B服务对应的文件目录</directory>
 						<excludes>
 							<!-- 这里需要注意下下面填写的是需要排除的哪些文件 -->
							<exclude>mappers/*.*</exclude>
						</excludes>
                         <filtering>false</filtering>
                     </resource>
				</resources>
			</configuration>
		</execution>
	</executions>
 </plugin>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/308009
推荐阅读
相关标签
  

闽ICP备14008679号