JPACKAGE(1) JDK Commands JPACKAGE(1)

jpackage - ابزاری برای بسته‌بندی برنامه‌های خودکفای جاوا.

jpackage [options]

گزینه‌های خط فرمان که با فاصله از هم جدا شده‌اند. بخش گزینه‌های jpackage را ببینید.

ابزار jpackage یک برنامه جاوا و یک ایمیج زمان اجرای جاوا را به عنوان ورودی دریافت کرده و ایمیج برنامه‌ای تولید می‌کند که شامل تمام وابستگی‌های لازم است. این ابزار قادر است یک بسته بومی (native) در قالب‌های ویژه هر پلتفرم، مانند exe در Windows یا dmg در macOS تولید کند. هر قالب باید روی همان پلتفرمی که روی آن اجرا می‌شود ساخته شود؛ هیچ پشتیبانی از ساخت میان‌پلتفرمی (cross-platform) وجود ندارد. این ابزار دارای گزینه‌هایی است که امکان سفارشی‌سازی برنامه‌های بسته‌بندی‌شده را به روش‌های گوناگون فراهم می‌کند.

@filename
خواندن گزینه‌ها از یک فایل.

از این گزینه می‌توان چندین بار استفاده کرد.

نوع بسته‌ای که باید ایجاد شود.

مقادیر معتبر عبارتند از: {"app-image", "exe", "msi", "rpm", "deb", "pkg", "dmg"}

اگر این گزینه مشخص نشود، نوع پیش‌فرض وابسته به پلتفرم ایجاد خواهد شد.

نسخه برنامه و/یا بسته.
حق نشر (کپی‌رایت) برنامه.
توضیحات برنامه.
چاپ متن راهنمای استفاده همراه با فهرست و شرح هر گزینه معتبر برای پلتفرم فعلی در خروجی، و خروج.
مسیر آیکون بسته برنامه (مسیر مطلق یا نسبی نسبت به دایرکتوری فعلی).
نام برنامه و/یا بسته.
مسیری که فایل خروجی تولیدشده در آن قرار می‌گیرد.

به طور پیش‌فرض دایرکتوری کاری فعلی است. (مسیر مطلق یا نسبی نسبت به دایرکتوری فعلی).

مسیر یک دایرکتوری جدید یا خالی مورد استفاده برای ایجاد فایل‌های موقت (مسیر مطلق یا نسبی نسبت به دایرکتوری فعلی).

در صورت تعیین، دایرکتوری موقت پس از اتمام کار حذف نخواهد شد و باید به صورت دستی حذف شود.

در صورت عدم تعیین، یک دایرکتوری موقت ایجاد شده و پس از اتمام کار حذف خواهد شد.

تولیدکننده برنامه.
خروجی پرجزئیات (verbose) را فعال می‌کند.
چاپ نسخه محصول در جریان خروجی و خروج.
فهرستی از ماژول‌ها که با کاما («,») از یکدیگر جدا شده‌اند برای افزودن

این فهرست ماژول‌ها، به همراه ماژول اصلی (در صورت تعیین شدن)، به عنوان آرگومان --add-module به jlink ارسال خواهد شد. در صورت عدم تعیین، یا تنها ماژول اصلی (اگر --module مشخص شده باشد)، یا مجموعهٔ پیش‌فرض ماژول‌ها (اگر --main-jar مشخص شده باشد) استفاده می‌شوند.

این گزینه می‌تواند چندین بار استفاده شود.

فهرستی از مسیرها که با File.pathSeparator از یکدیگر جدا شده‌اند

هر مسیر یا یک دایرکتوری از ماژول‌هاست یا مسیر یک فایل jar ماژولار، و می‌تواند مطلق یا نسبی نسبت به دایرکتوری جاری باشد.

این گزینه می‌تواند چندین بار استفاده شود.

فهرستی از گزینه‌ها که با فاصله از هم جدا شده‌اند تا به jlink ارسال شوند

در صورت عدم تعیین، مقدار پیش‌فرض آن "--strip-native-commands --strip-debug --no-man-pages --no-header-files" خواهد بود.

این گزینه می‌تواند چندین بار استفاده شود.

مسیر تصویر زمان اجرای از پیش تعریف‌شده که درون تصویر برنامه کپی خواهد شد (مسیر مطلق یا نسبی نسبت به دایرکتوری جاری)

اگر --runtime-image مشخص نشود، jpackage ابزار jlink را اجرا خواهد کرد تا تصویر زمان اجرا را با استفاده از گزینه‌های تعیین‌شده توسط --jlink-options بسازد.

مسیر دایرکتوری ورودی که حاوی فایل‌های مورد نیاز برای بسته‌بندی است (مسیر مطلق یا نسبی نسبت به دایرکتوری جاری)

تمام فایل‌های موجود در دایرکتوری ورودی در تصویر برنامه بسته‌بندی خواهند شد.

نام راه‌انداز، و مسیری به یک فایل Properties که شامل فهرستی از جفت‌های کلید و مقدار (key, value) است (مسیر مطلق یا نسبی نسبت به دایرکتوری جاری)

کلیدهای "module"،‏ "main-jar"،‏ "main-class"،‏ "arguments"، "java-options"،‏ "app-version"،‏ "icon"،‏ "linux-app-category"، "linux-app-release" و "win-console" می‌توانند استفاده شوند.

این گزینه‌ها به گزینه‌های اصلی خط فرمان افزوده شده، یا برای بازنویسی آن‌ها به کار می‌روند تا یک راه‌انداز جایگزین اضافی ساخته شود. راه‌انداز اصلی برنامه بر اساس گزینه‌های خط فرمان ساخته خواهد شد. راه‌اندازهای جایگزین اضافی را می‌توان با استفاده از این گزینه ساخت، و این گزینه می‌تواند چندین بار برای ساخت چندین راه‌انداز اضافی استفاده شود.

آرگومان‌های خط فرمان جهت ارسال به کلاس اصلی، در صورتی که هیچ آرگومان خط فرمانی به راه‌انداز داده نشود

این گزینه می‌تواند چندین بار استفاده شود.

گزینه‌ها جهت ارسال به محیط زمان اجرای جاوا (Java runtime)

این گزینه می‌تواند چندین بار استفاده شود.

نام کامل (Qualified name) کلاس اصلی برنامه برای اجرا

این گزینه تنها در صورتی می‌تواند استفاده شود که --main-jar مشخص شده باشد.

فایل JAR اصلی برنامه؛ حاوی کلاس اصلی (تعیین‌شده به صورت یک مسیر نسبی نسبت به مسیر ورودی)

تنها یکی از گزینه‌های --module یا --main-jar می‌تواند مشخص شود و نه هر دو.

ماژول اصلی (و در صورت تمایل، کلاس اصلی) برنامه

این ماژول باید در مسیر ماژول (module path) قرار داشته باشد.

هنگامی که این گزینه تعیین شود، ماژول اصلی در تصویر زمان اجرای جاوا پیوند داده خواهد شد. تنها یکی از گزینه‌های --module یا --main-jar می‌تواند مشخص شود و نه هر دو.

یک راه‌انداز کنسول برای برنامه ایجاد می‌کند؛ باید برای برنامه‌هایی که به تعاملات کنسول نیاز دارند مشخص شود.

شناسه‌ای که برنامه را به‌طور یکتا برای macOS مشخص می‌کند

پیش‌فرض آن نام کلاس اصلی (main class) است.

تنها مجاز به استفاده از نویسه‌های حرفی-عددی (A-Z, a-z, 0-9)، خط پیوند (-) و نقطه (.) است.

نام برنامه به‌صورتی که در نوار منو (Menu Bar) نمایش داده می‌شود

این نام می‌تواند با نام برنامه متفاوت باشد.

این نام باید کمتر از ۱۶ نویسه باشد و برای نمایش در نوار منو و پنجره اطلاعات (Info) برنامه مناسب باشد. پیش‌فرض آن نام برنامه است.

هنگام امضای بسته برنامه، این مقدار به ابتدای تمامی مؤلفه‌هایی که نیازمند امضا بوده و فاقد شناسه بسته موجود هستند افزوده می‌شود.
درخواست می‌کند که بسته (bundle) امضا شود.
نام دسته کلید (keychain) برای جستجوی هویت امضاکننده

در صورت مشخص نشدن، از keychainهای استاندارد استفاده می‌شود.

بخش نام تیم یا کاربر در هویت‌های امضای Apple
مشخص می‌کند که خروجی jpackage برای Mac App Store در نظر گرفته شده است.
مسیر فایل حاوی مجوزها (entitlements) برای استفاده هنگام امضای فایل‌های اجرایی و کتابخانه‌ها در بسته
رشته مورد استفاده برای ساخت LSApplicationCategoryType در plist برنامه

مقدار پیش‌فرض "utilities" است.

نشانی وب (URL) صفحه اصلی برنامه
مکان تصویر از پیش تعریف‌شده برنامه (application image) که برای ساخت یک بسته قابل نصب استفاده می‌شود

(مسیر مطلق یا نسبی نسبت به دایرکتوری جاری).

برای ساخت تصویر برنامه، گزینه‌های حالت create-app-image را ببینید.

مسیر یک فایل Properties که شامل فهرستی از جفت‌های کلید، مقدار است (مسیر مطلق یا نسبی نسبت به دایرکتوری جاری)

کلیدهای "extension" و "mime-type" و "icon" و "description" می‌توانند برای توصیف این وابستگی استفاده شوند.

این گزینه می‌تواند چندین بار استفاده شود.

مسیر مطلق دایرکتوری نصب برنامه (در macos یا linux)، یا زیرمسیر نسبی از دایرکتوری نصب مانند "Program Files" یا "AppData" (در Windows)
مسیر فایل پروانه (مسیر مطلق یا نسبی نسبت به دایرکتوری جاری)
مسیر بازنویسی منابع jpackage (مسیر مطلق یا نسبی نسبت به دایرکتوری جاری)

آیکون‌ها، فایل‌های الگو و سایر منابع jpackage را می‌توان با افزودن منابع جایگزین به این دایرکتوری بازنویسی کرد.

مسیر تصویر زمان اجرای از پیش تعریف‌شده (runtime image) برای نصب (مسیر مطلق یا نسبی نسبت به دایرکتوری جاری)

این گزینه هنگام ایجاد یک نصب‌کننده زمان اجرا الزامی است.

یک کادر محاوره‌ای اضافه می‌کند تا کاربر بتواند دایرکتوری محل نصب محصول را انتخاب کند.
نشانی اینترنتی (URL) برای دریافت اطلاعات بیشتر یا پشتیبانی فنی توسط کاربر
درخواست برای افزودن میانبر منوی استارت (Start Menu) برای این برنامه
گروه منوی استارتی که این برنامه در آن قرار می‌گیرد
درخواست برای انجام نصب به ازای هر کاربر (per-user)
درخواست برای ایجاد میانبر روی میزکار برای این برنامه
یک کادر محاوره‌ای اضافه می‌کند تا کاربر بتواند انتخاب کند که آیا میانبرها توسط نصاب ایجاد شوند یا خیر
نشانی اینترنتی (URL) اطلاعات به‌روزرسانی دردسترس برنامه
شناسه یکتا (UUID) مرتبط با ارتقاهای این بسته

نام بسته لینوکس

پیش‌فرض نام برنامه است.

نگه‌دارنده بسته .deb
گروه منویی که این برنامه در آن قرار می‌گیرد
بسته‌ها یا قابلیت‌های موردنیاز برای برنامه
نوع مجوز (مقدار “License: <value>” در فایل .spec مربوط به RPM)
مقدار Release در فایل <name>.spec مربوط به RPM یا مقدار بازنگری دبیان در فایل کنترل DEB
مقدار Group در فایل <name>.spec مربوط به RPM یا مقدار Section در فایل کنترل DEB
یک میانبر برای برنامه ایجاد می‌کند.

تولید یک بسته برنامه مناسب برای سیستم میزبان:

برای یک برنامه ماژولار:
    jpackage -n name -p modulePath -m moduleName/className
برای یک برنامه غیرماژولار:
    jpackage -i inputDir -n name \
        --main-class className --main-jar myJar.jar
از یک تصویر برنامه از پیش ساخته‌شده:
    jpackage -n name --app-image appImageDir

تولید یک تصویر برنامه:

برای یک برنامه ماژولار:
    jpackage --type app-image -n name -p modulePath \
        -m moduleName/className
برای یک برنامه غیرماژولار:
    jpackage --type app-image -i inputDir -n name \
        --main-class className --main-jar myJar.jar
برای ارائه گزینه‌های سفارشی خود به jlink، دستور jlink را جداگانه اجرا کنید:
    jlink --output appRuntimeImage -p modulePath \
        --add-modules moduleName \
        --no-header-files [<additional jlink options>...]
    jpackage --type app-image -n name \
        -m moduleName/className --runtime-image appRuntimeImage

تولید یک بسته زمان اجرای Java:

jpackage -n name --runtime-image <runtime-image>
2021 JDK 17