Java命令行界面(第21部分):航空公司2
本系列文章的第21篇關于Java中解析命令行參數的文章的重點是Airline 2庫。 Airline 2的GitHub項目頁面描述了該庫,“ Airline是一個Java庫,提供了基于注釋的框架來解析命令行界面。” 該頁面進入狀態:航空公司“既支持簡單的單個命令,也支持具有組的復雜git樣式的界面。” 頁面還限定航空公司2的配合關系原始航空公司庫 :“這是一個基本上改寫叉原始航空公司庫 ”。 這篇文章特別介紹了航空公司2.3.0 。
這篇文章中的示例將與本系列之前的文章中的示例類似,這些替代類庫用于解析Java的命令行參數。 這樣,這些示例中支持的選項將是文件路徑和名稱的規范,以及是否應啟用冗長性的規范。 此處顯示的示例的完整代碼列表可在GitHub上找到。
使用@Option批注很容易完成從Java與Airline 2解析Java命令行參數的“定義”階段,如下面的代碼清單所示。
航空公司2的“定義”階段
@Option(title="file", name={"-f", "--file"}, description="Path and name of file.") private String file;@Option(title="verbose", name={"-v", "--verbose"}, description="Enable or disable verbosity.") private boolean verbose;@Option注釋的這些實例的代碼是不言自明的。 @Option批注的“ name ”元素需要一個或多個String ,因此允許為同一選項指定多個標志。 在這種情況下,我為選項使用了相同的單連字符/單字符“短”形式和雙連字符/單詞“長”形式。
“解析”階段可以通過航空公司2使用SingleCommand類及其靜態singleCommand(Class <C>)方法來獲取SingleCommand實例,然后在該實例上調用parse(String [])方法來完成。 在下面的代碼清單中將演示這兩個語句。
航空公司2的“解析”階段
final SingleCommand<Main> parser = SingleCommand.singleCommand(Main.class); final Main main = parser.parse(arguments);只需通過訪問SingleCommand.parse(String[])方法提供的實例的@Option字段,即可完成航空公司2的“詢問”階段。 下一個代碼清單對此進行了演示。
航空公司2的“審訊”階段
if (main.file != null) {out.println("File path/name is '" + main.file + "'.");out.println("Verbosity is " + main.verbose); } else {out.println("ERROR: File path/name must be provided with -f or --file."); }接下來的兩個屏幕快照顯示了實際的示例。 當沒有提供任何參數時,第一個屏幕快照顯示輸出,第二個圖像顯示“正常”使用兩個選項的長和短版本來指定文件路徑/名稱和詳細程度。
航空公司支持生成使用和幫助信息。 不幸的是,我無法使用它,因為遇到了一個編譯錯誤,指出“找不到com.github.rvesse.airline.io.printers.UsagePrinter的類文件。” 我下載airline-2.3.0.jar沒有看到該類。
選擇框架或庫來幫助Java進行命令行解析時,需要考慮Airline 2的特性。
- 航空公司2是開源的,并根據Apache許可2.0版獲得許可 。
- 航空公司2是本系列中“ 較重 ”的庫之一, air-2.3.0.jar的大小約為316 KB,并且對Apache Commons Collections , Apache Commons Lang和javax.inject / javax.inject具有運行時依賴性。 。
- 盡管航空公司已經存在了一段時間,但航空公司2是該項目的最新更新。
- Airline 2基本用法的文檔非常直接且有用,但是本文中未顯示的許多功能的文檔仍在構建中,包含許多“ TODO”語句。
對于這些帖子中我的示例中實現的參數處理的“單個命令”風格, Airline 2易于使用。 我沒有看到用于表達是否需要某個選項的任何方法,但是簡單地在繼續之前檢查所需選項的null是一種簡單的方法。 鑒于其規模和依賴性,Airline 2可能最適合希望使用其本文未演示的許多強大功能的用戶。 對于本博文和本系列其他博文中演示的簡單示例,在表示“定義”,“解析”和“審訊”階段方面,有一些輕量級的庫,它們具有更少的依賴項,它們與Airline 2的工作原理非常相似。
其他參考
- 航空公司2 (GitHub)
- 航空公司用戶指南
- 航空公司2.3.0 (Maven存儲庫)
- Airline 2.3.0 API文檔 (Javadoc)
- 原始航空公司
翻譯自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-21-airline-2.html
總結
以上是生活随笔為你收集整理的Java命令行界面(第21部分):航空公司2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring中的异步和事务性事件侦听器
- 下一篇: 设置ip地址linux(设置ip地址 l