2024第一次在掘金发表文章,记录工作项目中遇到的问题,一起和大家探讨,分析问题,解决问题,认识更多志同道合的朋友,去畅聊这个行业。
-
在/src/main/resources 下创建目录存储下载模板Excel文件
场景:需要在该工程编译的JAR包打成docker镜像,然后提供接口给前端,下载模板,然后发现在docker运行中发现总是去读取文件是不行的。然后通过测试,在使用mvn clean installl生成jar包时候,在target目下下也生成了创建的目录,但是在本地打开其中的excel,发现文件已经损坏,就是用maven命令后,生成的文件已经损坏,所以代码去读取文件的时候总是读不到。
解决办法:不要再/src/main/resources下面创建目录存储模板。建议在工程目录下创建,然后存放模板,使用这种方式就不会出现将excel文件损坏情况。
-
引入第三方JAR包
通过maven中管理Jar包,比如第三方只给了jar包,没有再maven仓库中,需要自己去编译,然后在pom.xml中配置,也可以用本地依赖方法,
<dependency>
<groupId>com.hope.cloud</groupId> <!--自定义-->
<artifactId>CCP_REST_SMS_SDK</artifactId> <!--自定义-->
<version>1.0.0</version> <!--自定义-->
<scope>system</scope> <!--system,类似provided,需要显式提供依赖的jar以后,Maven就不会在Repository中查找它-->
<systemPath>${basedir}/libs/CCP_REST_SMS_SDK-1.0.0.jar
</systemPath> <!--项目根目录下的lib文件夹下-->
</dependency>
这种是某些SDK没有在maven仓库提供,所以直接依赖本地。
但是用maven build的时候,需要在中添加如下代码:
<resources>
<resource>
<directory>${project.basedir}/libs</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<targetPath>BOOT-INF/classes/</targetPath>
</resource>
</resources>
需要打包在BOOT_INF下,否则在调用第三方接口时候,会出现找不到的class。反正在这个地方我踩了好久的坑,特别还有就是第三方SDK不是maven工程,所有的依赖jar包都是在一个目录下这种,小心第三方中的依赖包版本是否和我们自己依赖包有冲突,特别是引用gson这种。解决包冲突可以用 dependency analyzer 插件去检查。
其实每一个开发的人,在项目中都会遇到踩过坑的问题,记录下来,自己也会收获,别人也会借鉴。如果大家在项目中遇到过其他的坑点,在下方留言,一起讨论。
初见众友心澎湃, 技术交流语声甜。 共谋发展齐努力, 美好未来在眼前。