我如何用 gradle 构建一个 Fat Jar(没有弃用的函数)

How can i build a FatJar with gradle (Without the depricated functions)

我正在尝试使用本地 .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
}

如果您使用的是最新版本,可能需要添加 duplicatesStrategy 'exclude' 并删除 configurations.compile.collect

+7

我正在使用 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 或更高版本,希望这能奏效。