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

时间:2020-02-04 06:01:28

标签: gradle

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

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

1 个答案:

答案 0 :(得分:0)

我找不到一种干净的方法来做到这一点,所以我使用了一个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