前言:
由于在项目中需要对视频进行缩略图的截图处理,引入了javacv-platform的包,但是打包后发现打出来的jar包非常的大
后面得知是因为javacv-platform会将所有平台的包集中起来处理,导致包特别的大
处理:
我们在项目中也用不到那么多的包,那么多的功能,所以我们需要对项目依赖进行精简。一般我们的服务都是部署在Linux平台上,开发的平台无外乎是Mac和Windows,所以我们只需要保留这三个平台的依赖,最后上线生产的时候只留下Linux平台的即可。
<properties><!--javacv截取视频帧--><!--todo: 以下版本号需要根据实际情况修改,最后上线生产的时候只留linux版本减少打包体积--><javacv.version>1.5.8</javacv.version><javacv.ffmpeg.version>5.1.2-1.5.8</javacv.ffmpeg.version><javacpp.platform.macosx-x86_64>macosx-x86_64</javacpp.platform.macosx-x86_64><javacpp.platform.linux-x86>linux-x86</javacpp.platform.linux-x86><javacpp.platform.linux-x86_64>linux-x86_64</javacpp.platform.linux-x86_64><javacpp.platform.windows-x86>windows-x86</javacpp.platform.windows-x86><javacpp.platform.windows-x86_64>windows-x86_64</javacpp.platform.windows-x86_64></properties><dependencies><!--javacv截取视频帧--><dependency><groupId>org.bytedeco</groupId><artifactId>javacv</artifactId><version>${javacv.version}</version></dependency><!--MacOS平台--><dependency><groupId>org.bytedeco</groupId><artifactId>javacpp</artifactId><version>${javacv.version}</version><classifier>${javacpp.platform.macosx-x86_64}</classifier></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg</artifactId><version>${javacv.ffmpeg.version}</version><classifier>${javacpp.platform.macosx-x86_64}</classifier></dependency><!--Linux平台--><dependency><groupId>org.bytedeco</groupId><artifactId>javacpp</artifactId><version>${javacv.version}</version><classifier>${javacpp.platform.linux-x86}</classifier></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg</artifactId><version>${javacv.ffmpeg.version}</version><classifier>${javacpp.platform.linux-x86}</classifier></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>javacpp</artifactId><version>${javacv.version}</version><classifier>${javacpp.platform.linux-x86_64}</classifier></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg</artifactId><version>${javacv.ffmpeg.version}</version><classifier>${javacpp.platform.linux-x86_64}</classifier></dependency><!--Windows平台--><dependency><groupId>org.bytedeco</groupId><artifactId>javacpp</artifactId><version>${javacv.version}</version><classifier>${javacpp.platform.windows-x86}</classifier></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg</artifactId><version>${javacv.ffmpeg.version}</version><classifier>${javacpp.platform.windows-x86}</classifier></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>javacpp</artifactId><version>${javacv.version}</version><classifier>${javacpp.platform.windows-x86_64}</classifier></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg</artifactId><version>${javacv.ffmpeg.version}</version><classifier>${javacpp.platform.windows-x86_64}</classifier></dependency></dependencies>
最后打包后可以看到jar包的体积小了很多,现在是三个平台集成在一起的包,后续上线生产的时候只留一个平台还可以精简更多。