首页 > 解决方案 > 我如何用 gradle 构建 FatJar(没有贬低的功能)

问题描述

我正在尝试使用本地 .jar 创建一个 FatJar。但是,我只找到了不推荐使用“编译”等描述方法的教程和指南。

做这样的事情的最新和最好的方法是什么?

需要完成的 .jar(包含所有依赖项)才能在远程服务器上运行它。

标签: gradlebuild.gradlefatjar

解决方案


我假设您没有使用 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 及更高版本,希望这项工作。


推荐阅读