我正在使用带有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/