使用 Gradle 创建可运行的 JAR

新手上路,请多包涵

到目前为止,我通过 Eclipse 的“导出…”功能创建了可运行的 JAR 文件,但现在我切换到 IntelliJ IDEA 和 Gradle 以实现构建自动化。

这里的一些文章建议使用“应用程序”插件,但这并不完全导致我预期的结果(只是一个 JAR,没有启动脚本或类似的东西)。

我怎样才能获得与 Eclipse 使用“导出…”对话框相同的结果?

原文由 Hannes 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 546
2 个回答

可执行 jar 文件只是一个在其清单中包含 Main-Class 条目的 jar 文件。所以你只需要配置 jar 任务,以便在它的清单中添加这个条目:

 jar {
    manifest {
        attributes 'Main-Class': 'com.foo.bar.MainClass'
    }
}

您可能还需要在清单中添加类路径条目,但方法相同。

请参阅 http://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html

原文由 JB Nizet 发布,翻译遵循 CC BY-SA 3.0 许可协议

JB Nizet 和 Jorge_B 的回答都是正确的。

在最简单的形式中,使用 Gradle 创建可执行 JAR 只是将适当的条目添加到 manifest 的问题。但是,更常见的是需要将依赖项包含在类路径中,这使得这种方法在实践中变得棘手。

应用程序插件 提供了另一种方法;它不创建可执行 JAR,而是提供:

  • a run 任务,以方便直接从构建中轻松运行应用程序
  • 一个 installDist 任务,它生成一个目录结构,包括构建的 JAR、它依赖的所有 JAR,以及一个启动脚本,它将它们全部拉到一个你可以运行的程序中
  • distZipdistTar 创建包含完整应用程序分发(启动脚本和 JAR)的存档的任务

第三种方法是创建一个所谓的“胖 JAR”,它是一个可执行 JAR,其中不仅包含组件的代码,还包含其所有依赖项。有几个不同的插件使用这种方法。我已经包含了一些我知道的链接;我敢肯定还有更多。

原文由 davidmc24 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题