Gradle项目JAR包输出路径与CLI应用分发指南

Gradle项目JAR包输出路径与CLI应用分发指南

本文旨在解决gradle项目中jar任务无法在预期位置生成jar包的问题,并探讨java cli应用的推荐分发方式。核心内容包括:解释jar包实际输出路径(尤其是在多项目或特定插件配置下),以及对比不同分发策略(如installdist、自包含jar、jlink和graalvm原生镜像),帮助开发者高效构建和部署java命令行工具

Gradle项目JAR包输出路径解析

在使用Gradle构建Java项目时,开发者通常会期望通过执行gradlew jar命令在项目根目录下的build/libs目录中找到生成的JAR包。然而,在某些特定配置下,即使构建成功,该目录也可能为空,导致开发者误以为JAR包未生成。

常见误区:JAR包位置的偏差

这种现象通常发生在以下两种情况:

多项目构建 (Multi-Project Build):如果你的项目是一个多项目构建,并且application插件或生成JAR包的逻辑是应用于某个子项目(例如,名为app的子项目),那么生成的JAR包将位于该子项目的构建输出目录中,即app/build/libs,而不是根项目的build/libs。特定插件行为:某些Gradle插件,特别是application插件,在配置时可能会影响最终产物的输出路径。虽然jar任务本身通常在应用插件的项目根目录下生成JAR,但如果项目结构或配置导致主应用逻辑被视为一个独立的模块或子项目,其JAR包的实际路径会相应调整。

示例分析

考虑以下build.gradle.kts配置:

plugins {    // 应用application插件以支持构建Java CLI应用。    application    id("com.diffplug.spotless") version "6.12.0")}repositories {    // 使用Maven Central解析依赖。    mavenCentral()}dependencies {    // 使用JUnit测试框架。    testImplementation("junit:junit:4.13.2")    // 应用所需依赖。    implementation("com.google.guava:guava:30.1-jre")    implementation("info.picocli:picocli:4.7.0")    annotationProcessor("info.picocli:picocli-codegen:4.7.0")    implementation("io.vavr:vavr:0.10.4")}application {    // 定义应用的主类。    mainClass.set("testlauncher.command.Runner")}subprojects {    apply {        plugin("com.diffplug.spotless")    }}spotless {    java {        importOrder()        removeUnusedImports()        googleJavaFormat()    }}project.tasks.findByName("build")?.dependsOn(project.tasks.findByName("spotlessApply"))

在这个示例中,application插件被应用于当前项目。通常情况下,jar任务会在此项目的build/libs目录下生成JAR。然而,如果项目结构实际是一个更复杂的父子结构,或者IDE(如IntelliJ IDEA)创建项目时默认生成了类似于app这样的子模块,那么即使build.gradle.kts看起来是为根项目配置的,实际的JAR也可能被放置在app/build/libs中。

解决方案

当遇到gradlew jar成功执行但JAR包不在预期位置时,最直接的解决方案是:

检查子项目目录:仔细检查所有可能的子项目目录,例如./app/build/libs、./main/build/libs等。查看Gradle构建日志:Gradle的构建日志通常会清晰地指示生成文件的路径。使用gradlew tasks –all检查任务输出:运行gradlew tasks –all可以列出所有任务及其描述,有时可以从中找到JAR任务的输出路径信息。

Java CLI应用的推荐分发方式

将Java命令行界面(CLI)应用分发给用户,通常不只是简单地提供一个JAR包。以下是几种常见且推荐的分发策略:

自包含的发行版 (gradlew installDist)application插件提供了一个非常方便的任务:installDist。执行gradlew installDist会在build/install/目录下生成一个完整的发行版,其中包含:

一个可执行脚本(.bat文件用于Windows,shell脚本用于Linux/macOS),用于启动应用。应用JAR包及其所有依赖的JAR包。这种方式用户只需下载并解压,即可直接运行,无需手动配置Java运行时环境路径。

优点

用户友好,开箱即用。包含所有依赖,避免依赖冲突。支持跨平台脚本。

缺点

Noiz Agent Noiz Agent

AI声音创作Agent平台

Noiz Agent 323 查看详情 Noiz Agent 发行包体积相对较大,因为它包含了所有依赖。仍然需要用户系统安装Java运行时环境(JRE)。

胖JAR (Fat JAR / Uber JAR)胖JAR是将应用程序代码及其所有依赖打包到一个独立的JAR文件中。虽然application插件默认生成的JAR不包含所有依赖,但可以通过配置shadow插件或spring-boot-gradle-plugin等来实现。

优点

单个文件,分发简单。无需单独管理依赖。

缺点

文件体积大。可能存在依赖冲突(如果不同依赖库使用了相同名称但版本不同的类)。仍然需要用户系统安装Java运行时环境。

使用jlink创建自定义运行时镜像 (JDK 9+)对于JDK 9及更高版本,可以使用jlink工具创建只包含应用程序所需模块的自定义JRE。这可以显著减小运行时环境的体积,并将其与应用程序打包在一起,形成一个完全自包含的发行版。

优点

完全自包含,用户无需安装JRE。运行时体积最小化。启动速度可能更快。

缺点

构建过程相对复杂。生成的发行版平台特定。需要JDK 9或更高版本。

GraalVM原生镜像 (Native Image)GraalVM可以将Java应用程序编译成独立的、平台特定的原生可执行文件。这意味着应用程序不再需要JVM,可以直接在操作系统上运行,启动速度极快,内存占用低。

优点

极快的启动速度和低内存占用。无需JVM,完全原生可执行。单个文件,易于分发。

缺点

编译时间较长。对某些高级JVM特性(如反射、动态代理)需要额外配置。生成的发行版平台特定。需要GraalVM环境。

总结与建议

在Gradle项目中,如果gradlew jar未在build/libs找到JAR包,请首先检查是否存在子项目结构,并在相应的子项目build/libs目录下查找。

对于Java CLI应用的分发,推荐根据实际需求选择:

对于大多数场景,使用gradlew installDist生成自包含的发行版是最佳选择,它兼顾了用户友好性和开发便捷性。如果对包体积和启动速度有极高要求,且目标平台明确,可以考虑jlink或GraalVM原生镜像。简单的内部工具,一个胖JAR也可能是可接受的方案。

理解Gradle的构建机制和不同分发方式的优缺点,将帮助开发者更高效地构建和部署高质量的Java命令行应用程序。

以上就是Gradle项目JAR包输出路径与CLI应用分发指南的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/897222.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月28日 18:25:21
下一篇 2025年11月28日 18:25:43

相关推荐

  • 欧意怎么在电脑上访问?欧意ouyi平台电脑版官方访问地址

    欧意平台%ignore_a_1%版可通过官网https://www.ouyi.com/访问,支持网页端登录,具备多窗口操作、菜单导航、消息通知等功能,实现跨设备同步与数据加密传输,保障账户安全。 欧意怎么在电脑上访问?这是不少网友都关注的,接下来由php小编为大家带来欧意ouyi平台电脑版官方访问地…

    好文分享 2025年12月11日
    000
  • okx交易所官网登录_2025最新okx官方网页版入口

    想要开始您的数字资产之旅吗?本篇指南将为您详细解析欧易(okx)交易所的官方网站访问、最新版app下载安装,以及新用户注册的完整步骤,无论您是初次接触还是操作中遇到疑问,都能在此找到清晰的指引。 访问欧易OKX官方网站 欧易官方网址: 欧易官方app: 1、首先,请通过您的浏览器访问上方提供的欧易官…

    2025年12月11日 好文分享
    000
  • Binance官方网站:币安交易所安全登录链接

    币安(binance)是全球领先的数字资产交易平台之一,为用户提供广泛的加密货币交易服务。它凭借丰富的币种选择、强大的安全性能和流畅的用户体验,赢得了全球数千万用户的信赖。本文将为您提供币安官方app的安全下载链接与详细的安装使用教程,帮助您快速开启数字资产之旅。点击本文中提供的下载链接,即可获取官…

    2025年12月11日 好文分享
    000
  • 派网(Pionex)交易所注册新账号+完成KYC身份认证图文教程

    pionex,又称派网,是全球第一的数字货币ai 机器人交易平台。 Binance币安 欧易OKX ️ Huobi火币️ 虽然很早就知道这间公司的产品,但都一直没有注册,趁着币圈的空投行情较低迷时,就来注册一下,创建新帐号,看看经过了好几年还存活在市场上的派网,有什么东西可以玩的。 前置作业 可上网…

    2025年12月11日 好文分享
    000
  • 币安交易所新用户注册入口_币安binance官网与官方APP下载安装教程

    对于希望进入加密货币领域的新手用户来说,选择一个安全可靠的交易平台至关重要。币安(binance)作为全球知名的数字资产交易所,提供了丰富的交易功能和便捷的操作体验。本教程将详细为您介绍如何通过币安官网完成新用户注册,并下载安装官方app,助您轻松开启数字货币投资之旅。 币安官方网站与APP下载入口…

    2025年12月11日 好文分享
    000
  • 币安交易所PC端与移动端入口_币安binance官网注册及安全交易操作指南

    作为全球知名的数字资产交易平台,币安(binance)为用户提供了覆盖pc浏览器和移动客户端的全方位服务。本指南将详细介绍如何通过官方渠道访问币安、完成app下载安装与账户注册,并指导您安全地进行数字货币交易。 一、币安官方渠道与PC/移动端入口 币安交易所是全球领先的加密资产交易服务商。为确保您的…

    2025年12月11日 好文分享
    000
  • 币安官方注册通道入口_币安(Binance)交易所网页端与移动端完整使用指南

    作为全球顶级的数字资产交易平台,币安(binance)凭借其丰富的功能、强大的安全性与流畅的用户体验,成为了无数加密货币投资者的首选。本指南将为您详细解析从注册、下载到交易的全过程,无论您是使用网页端还是移动app,都能轻松上手,开启您的数字货币之旅。 一、币安官方注册通道 为了保障您的账户与资产安…

    2025年12月11日 好文分享
    000
  • 欧易邀请码填写错误如何修改?OKX注册绑定邀请码最新教程

    欧易OKX是全球领先的数字资产交易平台,支持比特币、以太坊等主流币种交易。用户可通过本文提供的官方链接下载APP并完成安装注册。注册时需注意填写邀请码以享受手续费折扣、返佣等福利,邀请码须在注册时准确输入,一旦绑定通常无法修改,若填错需联系客服寻求帮助。建议使用可靠来源的邀请码,并了解其对应权益。此…

    2025年12月11日
    000
  • 币安交易所网页版PC端注册下载使用流程 附币安官网+教程

    首先提供币安交易所注册、下载及使用全流程指南。1、通过官方链接下载APP并允许安装未知来源应用;2、使用手机号或邮箱注册账户,设置密码并验证;3、完成身份认证(KYC),上传证件并进行人脸识别;4、登录后进入交易页面,选择买卖币种与交易方式,输入金额完成交易。全过程确保安全便捷,助力用户快速上手全球…

    2025年12月11日
    000
  • 2025欧易新手入门 欧易官方网页版注册与下载最全保姆级指南

    欧易app是一款功能全面的数字资产交易平台,致力于为全球用户提供安全、便捷的数字货币交易服务。它支持多种主流数字货币的交易,并提供丰富的金融工具和强大的安全保障。本文将为您提供欧易官方app的详细下载链接与安装教程,以及注册、身份认证和交易的保姆级指南,点击本文提供的下载链接即可下载。 欧易官方网页…

    2025年12月11日 好文分享
    000
  • 欧易交易所唯一官网入口 谨防假冒网站

    欧易(okx)是一款全球领先的数字资产服务平台,为用户提供包括比特币、以太坊等在内的多种数字资产的现货和衍生品交易服务。它以其强大的技术支持、丰富的产品线和可靠的安全保障,赢得了全球数千万用户的信赖。为确保您的资产安全,避免访问到假冒或钓鱼网站,本文将为您提供官方app的下载渠道。点击本文中的下载链…

    2025年12月11日 好文分享
    000
  • okx官网网页版入口 欧易网页版登录入口首页

    欧易网页版登录入口为https://www.okx.com/,提供全天候数字资产交易、多端数据同步、双重身份验证等安全机制,支持多种主流币种交易及实时行情分析,界面简洁,便于新手操作。 okx官网网页版入口在哪里?这是不少网友都关注的,接下来由php小编为大家带来欧易网页版登录入口首页,感兴趣的网友…

    2025年12月11日
    000
  • Velas (VLX) 币是什么?VLX 代币用途、特征以及2025年价格预测

    velas 正在获得关注,作为一个设计为快速、可及及可扩展的区块链,特别是针对那些想要熟悉工具而又无需面对通常性能限制的开发者。 Binance币安 欧易OKX ️ Huobi火币️ 建基于Solana框架并完全支持的形状以太坊虚拟机, Velas 将两个强大的世界融合成一个生态系统。 其原生资产 …

    2025年12月11日
    000
  • 币安binance安卓/iOS版下载_官方网站注册与账户身份认证完整流程

    对于希望进入数字货币领域的投资者来说,选择一个安全可靠的交易平台至关重要。币安(binance)作为全球顶级的加密货币交易所,凭借其全面的功能、强大的安全性和良好的用户体验,成为了无数用户的首选。本指南将为您详细介绍如何从零开始,完成币安app的下载、账户注册及身份认证。 币安官方网站与APP下载通…

    2025年12月11日 好文分享
    000
  • 比特币全球总量有多少?怎么购买?一文了解币圈

    比特币总量上限为2100万枚,预计2140年挖完;初学者可通过合规交易平台购买,并建议使用硬件储存包等安全方式存储,妥善保管私钥或助记词。 本文将详细介绍比特币的总量上限,并提供一个清晰的指南,帮助初学者了解如何通过合规的途径购买并安全地存储这一数字资产,为进入数字世界提供基础知识。 一、比特币的总…

    2025年12月11日
    000
  • 加密货币交易的蜡烛图形态有几种?7种K线形态汇总

    加密货币市场以其剧烈波动而闻名,因此技术分析是交易者必不可少的工具。k线形态是交易者工具箱中最强大的工具之一。 Binance币安 欧易OKX ️ Huobi火币️ 这些形态有助于识别潜在的市场反转、延续和动能变化。掌握K线形态可以显着提高您做出明智交易决策的能力。以下是每位加密货币交易者都应该了解…

    2025年12月11日 好文分享
    000
  • 全世界比特币规模排名 比特币最新排名榜单前十名盘点

    中本聪是最大单一持有者,超100万枚比特币未动;MicroStrategy为持股最多上市公司;灰度信托管理巨额资产;美国政府因没收成主要持有者;Marathon、Tesla、Block.one、Winklevoss兄弟、Tether及Coinbase均位列全球主要持有实体。 随着比特币在全球范围内的…

    2025年12月11日
    000
  • 一文了解比特币(BTC)核心(Bitcoin Core)罕见获赞:独立审计未发现严重缺陷

    Binance币安 欧易OKX ️ Huobi火币️ 比特币核心迎来了其发展史上的重要里程碑——首次独立安全审计圆满完成,未发现任何高危或中等风险漏洞。审查团队对该项目的整体安全性、代码质量以及测试体系给予了高度认可。 此次审计由知名法国网络安全公司Quarkslab主导,并由OSTIF代表非营利组…

    2025年12月11日
    000
  • 比特币初始什么价格?比特币第一年什么价格?一文读懂

    比特币最初没有价格,2009年仅为技术实验;2010年5月1万枚换两份披萨,单价约0.0025美元;同年7月Mt. Gox交易所挂牌价约0.05美元,标志市场定价形成。 很多人对数字资产的开山鼻祖抱有好奇,想知道它在最初阶段的价值究竟是多少。实际上,它并非一诞生就拥有价格,其价值的形成经历了一个从无…

    2025年12月11日
    000
  • 比特币涨跌周期是多少?比特币涨跌规律总结

    比特币价格周期围绕四年一次的减半事件展开,经历牛市爆发、熊市回调、盘整积累三阶段,波动趋缓、周期或延长,受宏观影响加剧,需结合历史规律与风险管理进行长期布局。 比特币的价格波动看似难以预测,但其背后存在着较为明显的周期性规律。理解这些周期,特别是与“减半”事件相关的四年周期,是把握市场脉搏、制定长期…

    2025年12月11日
    000

发表回复

登录后才能评论
关注微信