gradle - Gradle:发布jar时从依赖项中排除文件

标签 gradle

我正在使用带有gradle的maven-publish发布库jar。该库取决于libtensorflow_jni.jar,其中包含几个大型二进制文件。为了将库的大小减小到我遇到的第3方限制以下,我希望在构建整体程序包时从libtensorflow_jni jar中排除(不需要的)Windows dll二进制文件。

发布时,是否有任何合理的方法从依赖关系中排除特定文件?

最佳答案

我找不到一种干净的方法来做到这一点,所以我使用了一个hacky的shell脚本:

set -ex

# remove unneeded large binaries from the deployed zip file to avoid going over Lambda limits

cd build/distributions/
unzip -o app.zip
rm app.zip
zip -d lib/libtensorflow_jni-*.jar org/tensorflow/native/windows-x86_64/tensorflow_jni.dll
zip -d lib/libtensorflow_jni-*.jar org/tensorflow/native/darwin-x86_64/libtensorflow_jni.dylib
zip -r app.zip .

并通过build.gradle从一个任务中调用此脚本,如下所示:
task shrinkAppJar(type: Exec) {
    commandLine './shrink-jar.sh'
}

build.dependsOn buildZip, shrinkAppJar

关于gradle - Gradle:发布jar时从依赖项中排除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60051447/

相关文章:

java - SonarQube Gradle 插件警告 : "Class not found: org.joda.convert"

Gradle:从编译闭包中排除和包含单行中的多个组/模块

android - 自动接受所有 SDK 许可

gradle - 从Travis CI推送到主分支

android - 多个dex文件定义Landroid/support/v4/content/res/TypedArrayUtils

windows - 有没有办法在Gradle脚本中为Windows目录路径使用通配符?

android - 我在Gradle中有一个错误

Gradle 和 Gradle 包装器版本

android-studio - Android Studio gradle 的 "calculate task graph"耗时太长

gradle - 在 Gradle 中运行 `check` 任务而不运行 `test` 任务