gradle - 我如何用 gradle 构建 FatJar(没有贬低的功能)
问题描述
我正在尝试使用本地 .jar 创建一个 FatJar。但是,我只找到了不推荐使用“编译”等描述方法的教程和指南。
做这样的事情的最新和最好的方法是什么?
需要完成的 .jar(包含所有依赖项)才能在远程服务器上运行它。
解决方案
我假设您没有使用 kotlin,因为您没有提到任何相关信息。您可以创建自己的任务来执行此操作
task createfatJar(type: Jar) {
manifest {
attributes 'Main-Class': 'full.package.path.Main'
}
archiveClassifier = "all"
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
with jar
}
如果您使用最新版本,可能 +7 您需要添加duplicatesStrategy 'exclude'
和删除configurations.compile.collect
我正在使用 6.9,但它应该如下所示
task createfatJar(type: Jar) {
duplicatesStrategy 'exclude'
manifest {
attributes 'Main-Class': 'full.package.path.Main'
}
archiveClassifier = "all"
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
with jar
}
如果您使用版本 7 及更高版本,希望这项工作。
推荐阅读
- sql - 如何在 Apache Drill 上使用此查询查看
- r - 计算自下一个事件以来的天数和距离下一个事件的天数
- python - 将 python `cycle` 转换为 `list`
- javascript - 如何在 React 中使用 slideToggle 功能?
- angular - Angular/Typescript - 通配符模块声明
- r - 在 3d 散点图 R 上标记特定点
- ios - 应用安装失败。未找到代码签名
- javascript - 模糊边框出现在移动设备上的 div 等边框上
- jestjs - 在开玩笑测试中将函数作为参数传递
- sql - 列中相同值序列内的 Oracle 行号