我正在尝试从一个项目中生成两个不同的 jar,该项目是一个 monorepo,其中包含对这个世界上许多伟大事物的依赖关系,所以不用说我不希望这些可执行 jar 具有大尺寸,而是希望它们只包含他们实际使用的类。
我按照这里的说明进行操作https://imperceptiblethoughts.com/shadow/configuration/minimizing/
。
为了测试shadowJar
任务是否真的有效,我创建了一个简单的 Main java 文件,它实际上只使用了 java SDK。
public class Main {
public static void main(String[] args) {
System.out.println("client");
}
}
并添加了实际的影子 jar 任务并将其指向一个主类
shadowJar {
archiveBaseName.set('client')
archiveClassifier.set('')
archiveVersion.set('0.1')
minimize()
manifest {
attributes 'Main-Class': 'my.package.Main'
}
}
它正确生成了 uber jar(我能够简单地运行它java -jar ...
),但是文件的大小是 10Mb。
然后我生成了一个没有minimize()
部分的新版本,它是 15Mb。
我在这里做错了什么吗?也许我对这个工具期望太高,而proguard(设置起来很乏味)是唯一的方法吗?