如何使用Gradle从Spring Boot Fat Jar中排除指定依赖库
从Spring Boot可执行Fat Jar排除指定Jar包
要排除你指定的Jar包,有两种实用方式,可根据你的依赖类型选择:
方式一:调整依赖Scope(推荐)
将需要排除的依赖的Scope改为providedRuntime,Gradle会在编译、测试阶段保留这些依赖,但不会把它们打包进最终的Fat Jar。
修改dependencies块如下:
dependencies { // 其他原有依赖保持不变... // 修改BouncyCastle依赖的Scope providedRuntime 'org.bouncycastle:bcprov-jdk18on:1.73' providedRuntime 'org.bouncycastle:bcpkix-jdk18on:1.73' providedRuntime 'org.bouncycastle:bcutil-jdk18on:1.73' // 修改本地Prosys SDK Jar的Scope providedRuntime files('lib/prosys-opc-ua-sdk-evaluation-4.10.6-24.jar') // 其他本地Jar保持不变... }
方式二:配置bootJar任务排除规则
如果不想修改依赖Scope,可直接在bootJar任务中指定要排除的文件或模块:
在build.gradle末尾添加以下配置:
bootJar { // 排除BouncyCastle的三个模块 exclude group: 'org.bouncycastle', module: 'bcprov-jdk18on' exclude group: 'org.bouncycastle', module: 'bcpkix-jdk18on' exclude group: 'org.bouncycastle', module: 'bcutil-jdk18on' // 排除本地的Prosys SDK Jar exclude 'prosys-opc-ua-sdk-evaluation-4.10.6-24.jar' }
验证排除效果
执行./gradlew bootJar打包后,可通过以下命令检查Fat Jar内是否已排除指定文件:
unzip -l build/libs/your-application-name-0.0.1-SNAPSHOT.jar | grep -E "(bcprov|bcpkix|bcutil|prosys-opc-ua)"
若没有输出,说明排除成功。
内容的提问来源于stack exchange,提问作者Ram
相关产品推荐
相关产品推荐

