cli命令行界面 demo_Java命令行界面(第24部分):MarkUtils-CLI
cli命令行界面 demo
本系列的第一篇 有關使用Java解析命令行參數的文章介紹了Apache Commons CLI庫。 這是本系列中介紹的基于Java的命令行解析庫中最古老的,而且可能是最常用的之一。 Apache Commons CLI確實顯示了它的時代,特別是與一些更現代的基于Java的命令行處理庫相比時。 Mark A. Ziesemer的“ Apache Commons CLI上的CLI庫包裝”,稱為MarkUtils-CLI,旨在“現代化” Apache Commons CLI,并且是本博客文章的主題。
Ziesemer在博客文章“ MarkUtils-CLI:Apache Commons CLI的注釋(及更多) ”中寫道:
我覺得Apache Commons CLI項目賣空了。 我發現它是一個非常全面,設計良好的庫,可以有效地解析命令行。 我觀察到的唯一缺點是該項目是在Java 5和注釋可用之前開發的。 因此,該庫不支持注釋必須提供的任何功能。
引入MarkUtils的最新功能:MarkUtils-CLI是一個庫,可在Apache Commons CLI和Java注釋之間提供有效的橋梁,而無需替換成熟的Commons CLI庫。
這篇文章使用了與本系列以前的文章(“文件”和“詳細”命令行選項)相似的示例,以說明MarkUtils-CLI如何包裝Apache Commons CLI,并允許通過注釋定義選項并提供類型化選項。 在本文中,使用MarkUtils-CLI的CliRunner是為了方便。 這些示例的完整源代碼清單可在GitHub上找到 。
MarkUtils-CLI的“定義”階段是應用@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創建的“幫助”中可以使用“ description ”元素,并且“ required ”注釋元素允許您指定必需的選項。 為“詳細”指定argCount為零還向解析器指示“詳細”選項不需要任何參數。
可以通過CliRunner和Apache Commons CLI CommandLineParser的實例在MarkUtils-CLI中完成“解析”階段。 在下一個代碼清單中對此進行了演示,其中將Apache Commons CLI的DefaultParser實例與該類的實例(其字段使用@Parameter注釋進行注釋)一起傳遞給CliRunner的構造函數。
MarkUtils-CLI的“解析”階段
final DefaultParser cmdLineParser = new DefaultParser(); final CliRunner<Main> cliRunner = new CliRunner(cmdLineParser, Main.class);當使用MarkUtils-CLI的CliRunner方法時,“詢問”階段是在Callable的call()方法中完成的,該方法傳遞給CliRunner的“ run”方法。 下一個代碼清單中顯示了“ call()”方法的實現, 在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是開源的,并根據GNU通用公共許可證版本3 獲得 許可 。
- 一些 ,尤其是企業看來,是不舒服與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的作者向我通知了該庫的存在,并且似乎正在積極地支持它,這對于本系列中的所有庫都無法說明。 他已經表示,他“致力于響應和解決遇到的任何問題 ” MarkUtils-CLI GitHub Issues Tracker 。 他還指出,有95個正在執行的單元測試,它們驗證了MarkUtils-CLI的功能。
MarkUtils-CLI是Apache Commons CLI的小型包裝,通過使用批注和命令行選項類型的處理,使Apache Commons CLI體驗現代化。 MarkUtils-CLI很可能會吸引那些已經在使用Apache Commons CLI的用戶,并希望享受更輕松的帶有注釋的選項定義和更多類型安全的選項解析的好處。 該庫的優點包括庫的當前支持和全面的單元測試。 可能阻止某些人使用該庫的問題是其GPL許可證及其對SLF4J的外部依賴關系(假定Apache Commons CLI依賴關系不是問題,因為它被宣傳為Apache Commons CLI的包裝器)。
其他參考
- MarkUtils-CLI:Apache Commons CLI的注釋(及更多) (主博客文章)
- MarkUtils-CLI下載
- MarkUtils-CLI API文檔 (Javadoc)
- MarkUtils問題
- https://java.ziesemer.com/ (包括MarkUtils-CLI在內的各種Java項目)
- MarkUtils-CLI SureFire報告 (95個單元測試)
- MarkUtils博客文章
翻譯自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-24-markutils-cli.html
cli命令行界面 demo
總結
以上是生活随笔為你收集整理的cli命令行界面 demo_Java命令行界面(第24部分):MarkUtils-CLI的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 索爱C905和K858(索爱c902)
- 下一篇: 浏览器打开淘宝网页提示访问受限解决方法