日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 默认站点!

默认站点

當前位置: 首頁 >

Java命令行界面(第24部分):MarkUtils-CLI

發(fā)布時間:2023/12/3 33 豆豆
默认站点 收集整理的這篇文章主要介紹了 Java命令行界面(第24部分):MarkUtils-CLI 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本系列中有關(guān)使用Java解析命令行參數(shù)的第一篇文章介紹了Apache Commons CLI庫。 這是本系列中介紹的基于Java的命令行解析庫中最古老的,而且可能是最常用的之一。 Apache Commons CLI確實顯示了它的時代,特別是與一些更現(xiàn)代的基于Java的命令行處理庫相比時。 Mark A. Ziesemer的“ Apache Commons CLI上的CLI庫包裝”,稱為MarkUtils-CLI,旨在“現(xiàn)代化” Apache Commons CLI,并且是本博客文章的主題。

Ziesemer在博客文章“ MarkUtils-CLI:Apache Commons CLI的注釋(及更多) ”中寫道:


我覺得Apache Commons CLI項目賣空了。 我發(fā)現(xiàn)它是一個非常全面,設(shè)計良好的庫,可以有效地解析命令行。 我觀察到的唯一缺點是該項目是在Java 5和注釋可用之前開發(fā)的。 因此,該庫不支持注釋必須提供的任何功能。

引入MarkUtils的最新功能:MarkUtils-CLI是一個庫,可在Apache Commons CLI和Java注釋之間提供有效的橋梁,而無需替換成熟的Commons CLI庫。

這篇文章使用的示例與本系列以前的文章(“文件”和“詳細”命令行選項)相似,以說明MarkUtils-CLI如何包裝Apache Commons CLI,并允許通過注釋定義選項并提供類型化選項。 在本文中,使用MarkUtils-CLI的CliRunner是為了方便。 這些示例的完整源代碼清單可在GitHub上找到 。

MarkUtils-CLI的“定義”階段是應(yīng)用@Parameter注釋的地方,如下面的代碼清單所示。

MarkUtils-CLI的“定義”階段

@Parameter(name="f", longName="file", description="Path/name of file", required=true) public String file;@Parameter(name="v", longName="verbose", description="Verbosity enabled or not", argCount=0) public boolean verbose;

此代碼清單顯示了如何將“短”選項名稱 (單個連字符/單個字符)和“長”選項名稱 (雙連字符/單詞)指定為@Parameter批注的不同元素。 MarkUtils-CLI創(chuàng)建的“幫助”中可以使用“ description ”元素,并且“ required ”注釋元素允許您指定必需的選項。 將“詳細”指定為argCount時 ,還向解析器指示“詳細”選項不需要任何參數(shù)。

可以通過CliRunner和Apache Commons CLI CommandLineParser的實例在MarkUtils-CLI中完成“解析”階段。 在下一個代碼清單中對此進行了演示,其中將Apache Commons CLI的DefaultParser實例與該類的實例(其字段使用@Parameter注釋進行注釋)一起傳遞給CliRunner的構(gòu)造函數(shù)。

MarkUtils-CLI的“解析”階段

final DefaultParser cmdLineParser = new DefaultParser(); final CliRunner<Main> cliRunner = new CliRunner(cmdLineParser, Main.class);

當使用MarkUtils-CLI的CliRunner方法時,“詢問”階段是在Callable的call()方法中完成的,該方法傳遞給CliRunner的“ run”方法。 下一個代碼清單中顯示了“ call()”方法的實現(xiàn), 在GitHub的完整源代碼清單中提供了將擁有的Callable傳遞給CliRunner的“ run”方法的代碼 。

MarkUtils-CLI的“審訊”階段

@Override public Integer call() throws Exception {out.println("File path/name is '" + file + "' and verbosity is " + verbose);return file != null ? 0 : -1; }

后面的兩個屏幕快照演示了到目前為止顯示的示例。 第一張圖片顯示了當沒有提供所需的“文件”選項時生成的幫助信息。 第二張圖片描述了“文件”和“詳細”的短名稱和長名稱選項的各種組合的示例代碼的行為。

選擇框架或庫來幫助Java進行命令行解析時,需要考慮MarkUtils-CLI的特征。

  • MarkUtils-CLI是開源的,并根據(jù)GNU通用公共許可證版本3 獲得 許可 。
    • 一些 ,尤其是企業(yè)看來,是不舒服與GPLv3的許可證。
  • MarkUtils-CLI可作為單獨的JAR獲得,但從概念上講,它是可從https://java.ziesemer.com/獲得的更大MarkUtils的一部分。
  • com.ziesemer.utils.cli-2017.05.28.jar JAR相對較小(大約26 KB),但對外部庫Apache Commons CLI具有運行時依賴性(預期是因為MarkUtils-CLI包裝此庫)和SLF4J (因為SLF4J為廣泛使用的庫,對于許多人來說,這種依賴性可能不是什么大問題。
  • MarkUtils-CLI需要Java SE 6 。
  • MarkUtils-CLI的作者向我通知了該庫的存在,并且似乎正在積極地支持它,這對于本系列中的所有庫都是無法說的。 他已經(jīng)表示,他“致力于響應(yīng)和解決遇到的任何問題 ” MarkUtils-CLI GitHub Issues Tracker 。 他還指出,有95個正在執(zhí)行的單元測試,這些測試驗證了MarkUtils-CLI的功能。

MarkUtils-CLI是Apache Commons CLI的小型包裝,通過使用批注和命令行選項類型的處理,使Apache Commons CLI體驗現(xiàn)代化。 MarkUtils-CLI很可能會吸引那些已經(jīng)在使用Apache Commons CLI的用戶,并希望享受更輕松的帶有注釋的選項定義和更多類型安全的選項解析的好處。 該庫的優(yōu)點包括庫的當前支持和全面的單元測試。 可能阻止某些人使用該庫的問題是其GPL許可證及其對SLF4J的外部依賴關(guān)系(假定Apache Commons CLI依賴關(guān)系不是問題,因為它被宣傳為Apache Commons CLI的包裝器)。

其他參考

  • MarkUtils-CLI:Apache Commons CLI的注釋(及更多) (主博客文章)
  • MarkUtils-CLI下載
  • MarkUtils-CLI API文檔 (Javadoc)
  • MarkUtils問題
  • https://java.ziesemer.com/ (包括MarkUtils-CLI在內(nèi)的各種Java項目)
  • MarkUtils-CLI SureFire報告 (95個單元測試)
  • MarkUtils博客文章

翻譯自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-24-markutils-cli.html

總結(jié)

以上是默认站点為你收集整理的Java命令行界面(第24部分):MarkUtils-CLI的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得默认站点網(wǎng)站內(nèi)容還不錯,歡迎將默认站点推薦給好友。