د دوو کلونو مخکې، زه یو کوچني د دې لپاره چې زما د فایبرونو په بیلګې کې د نوم بدلون لپاره مرسته وکړي. زه په حقیقت کې د دې سره جوړ کړم په هرصورت، زه د پخوا په اونۍ پورې کار نه کړم. او بیا، زه حیران شو چې دا کار نه کوي چې د شبکې حجم ته د نوم بدل کړئ، که څه هم دا په راتلونکي کې لري. په دې مختصر پست کې، زه د ستونزو او د هغې د حل په اړه وښيي. کټلین GUI مختلف JVM frameworks د ستونزو کله چې UberJAR پیل شو، زه د شبکې حجمونه نه وګورئ. که زه په ځمکه کې د پړاو ټیپ کړم، زه نه وګورئ د زیرنډونه. زه په آنلاین کې د حل لپاره چمتو کړم، او دا د غوښتنلیک ته د اجازهونه : . زه په لیست کې د جاوا SDK یا UberJAR اضافه وکړم، مګر زه د لاره نه لرم. Local Network Settings > Privacy & Security > محلي شبکې د د حل د حل ساده دی: د UberJAR څخه د عادي macOS اپلیکیشن جوړ کړئ. په ساده ترین ډول، د macOS اپلیکیشن یوازې یو تاسو کولی شئ دا په لاس کې تکرار کړئ، مګر زه خسته ام، او د دې لپاره وسایلو شتون لري. دا یو ډول وسایلو ده. دا یو د وسایلو څخه دی چې زه په اړه زده کړې، زه د ecstatic په اړه، یو ځل کارول، او د راتلونکي ځل پورې وساتئ. د ځانګړي جوړښت سره د پوښونو د پیستون jpackage د نغمة کارول په پیل کې لکه دا: jpackage jpackage \ --type app-image \ #1 --input target \ #2 --name RenamerSwing \ #3 --main-jar renamer-swing-1.0-SNAPSHOT.jar #4 د ارزښت د شاملولو لپاره د app نوم د UberJAR ته د سړک دا کار کوي او د macOS اپلیکیشن جوړوي. موږ کولی شو د پایلې اپلیکیشن پیل کړئ، او د OS پوښتنه چې آیا تاسو غواړئ د محلي شبکې لاسرسي اجازه ورکړئ. بشپړ. که څه هم، ټولې کاپیونه دا نه یوازې د اصل JAR، ټولګي، بلکه د نورو موادو هم شامل دي. jpackage target د جوړولو د ښه ما د Maven جوړولو په ځای کې د تماس کولو لپاره د ښه کولو لپاره ټاکل شوي په لارښود jpackage لومړی مرحله دا ده چې د UberJAR په یو خالی فارم کې حرکت وکړئ، نو موږ کولی شو د . jpackage input <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.3.1</version> <executions> <execution> <id>copy-jar-for-jpackage</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/jpackage-input</outputDirectory> <resources> <resource> <directory>${project.build.directory}</directory> <includes> <include>${project.build.finalName}.jar</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin> بل مرحله دا ده چې په واقعیت کې یو Maven پلگ ان پیدا کړئ چې پوښل کیږي د پایلو دلته څنګه دا کاروي: jpackage org.panteleyev:پکپک-پکپک-پکپک <plugin> <groupId>org.panteleyev</groupId> <artifactId>jpackage-maven-plugin</artifactId> <version>1.6.5</version> <configuration> <name>RenamerSwing</name> <!--1--> <appVersion>${project.version}</appVersion> <vendor>Nicolas Fränkel</vendor> <destination>target</destination> <input>target/jpackage-input</input> <!--2--> <mainJar>${project.build.finalName}.jar</mainJar> <!--3--> <mainClass>${main.class}</mainClass> <type>APP_IMAGE</type> <!--4--> </configuration> <executions> <execution> <id>jpackage</id> <phase>package</phase> <goals> <goal>jpackage</goal> </goals> </execution> </executions> </plugin> د App نوم د مخکښ مرحله کې جوړ شوي پوښونو ته اشاره وکړئ د اصلي JAR ته سړک د ارزښت په یاد ولرئ چې د پارامترونو له خوا د امر رنګ انتخابونه پیژندل کیږي. د ټوکر ختم د دوو بشپړ ټکونه شتون لري: نسخه او د اپلیکیشن اندازه. د ورژن څخه پیل شو. د دې ترتیب کارول کیږي . د جوړښت ناکام کیږي که دا سره suffixed وي ، لکه څنګه چې د Mac اپلیکیشن نسخه باید د نمونوي پیژندل شي د دې حل کولو لپاره، موږ کولی شو د . دا د څو هدفونو وړاندې کوي، په شمول دا د Maven نسخه په مختلفو ملکیتونو کې رامینځته کوي. ${project.version} -SNAPSHOT major.minor.bugfix build-helper-مومین-د پلګن Parse نسخه <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>3.6.0</version> <executions> <execution> <id>parse-version</id> <phase>initialize</phase> <goals> <goal>parse-version</goal> </goals> </execution> </executions> </plugin> موږ کولی شو د نسخه لړۍ بدلون سره: <appVersion>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}</appVersion> دوهم پرمختګ د اپلیکیشن اندازه دی. د دې ترتیب د 160MB اپلیکیشن په خپل ماشین کې رامینځته کوي. د JVM پر بنسټ د اپلیکیشن په اړه دقیقا ندي، مګر دا هم ښه نه ده. په ښه توګه، ګمرکونه په لاندې کې د ګمرک JRE جوړوي. د اپلیکیشن په ځان کې شامل دی. jpackage jlink jlink کاروي ټول جوړ شوي ماډلونه، یا ټول په معياري توګه. په نه ډیری ښه سایټ کې، موږ هیڅ ډول نه جوړ کړ. یوازې د اړتیا وړ ماډلونه اضافه کولو سره، موږ کولی شو د اپلیکیشن اندازه په نیم کې، 82MB ته کم کړي. jpackage <plugin> <groupId>org.panteleyev</groupId> <artifactId>jpackage-maven-plugin</artifactId> <version>1.6.5</version> <configuration> <name>RenamerSwing</name> <appVersion>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}</appVersion> <vendor>ch.frankel.blog</vendor> <destination>target</destination> <input>target/jpackage-input</input> <mainJar>${project.build.finalName}.jar</mainJar> <mainClass>${main.class}</mainClass> <type>APP_IMAGE</type> <addModules> <addModule>java.base</addModule> <addModule>java.desktop</addModule> <addModule>java.logging</addModule> </addModules> </configuration> په دې وخت کې، تاسو کولی شئ د اپلیکیشن په خپل Mac تاسو کولی شئ دا هم د آیکونو سره نور customize، او داسې نور. د زما لپاره، دا زما د مقاصد لپاره ډیره ښه دی. Applications د پایلو په دې پست کې، موږ د یو UberJAR سره پیل کړ چې د اوسني macOS امنیت ماډل له امله د ریموټ ټیمونو کې فایلونه نه بدلول کیدی شي. د کار کولو لپاره، موږ د UberJAR په اصلي macOS اپلیکیشن کې راټول کړ. بيا، موږ د ځانګړي ماډلونو سره د حالت سره د نږدې اندازې کمولو سره ښه کړ. د دې پست لپاره بشپړ سرچینې کوډ په GitHub کې شتون لري: https://github.com/ajavageek/renamer-swing?embedable=true To go further: د اپلیکیشن په macOS کې د فایلونو ته لاسرسي کنټرول کول د macOS اپلیکیشن Anatomy د پیستون په اصل کې نشر شوي په A Java Geek په 25th جنوري، 2025 د جاوا Geek