Java命令行界面(第14部分):google-options
google-options的GitHub頁面指出google-options是“來自Google(java)的人們的命令行參數解析庫。” 該頁面繼續說:“這是Bazel Project中的命令行參數解析器。 com.google.devtools.common.options程序包已拆分為一個單獨的jar,用于通用工具。” 這篇博客文章演示了如何將google-options應用于處理Java代碼中的命令行選項。
這篇文章中用于演示google-options的示例與本系列前面的13篇文章中有關處理Java命令行選項的示例相似。 本示例支持兩個選項:一個必需的文件路徑/名稱選項,該選項要求帶有該路徑和名稱的String參數,以及一個不帶參數的詳細選項(它的存在啟用詳細性)。 這篇文章只會顯示代碼中最相關的部分,但是完整的代碼可以在GitHub上找到 。
基于Java的命令行處理的“定義”階段是通過自定義類在google-options中完成的,該類擴展了google-options的com.google.devtools.common.options.OptionsBase類。 自定義類應提供與預期的命令行選項相對應的public字段,并且每個public字段都應使用@Option注釋進行注釋 。 @Option批注需要兩個元素( name和defaultValue ),并允許使用諸如help和abbrev的可選元素。 在自定義Options類的下一個代碼清單中提供了此“定義”階段的示例。
帶有google-options的“定義”階段:自定義
/*** Represents command-line options to be processed via* google-options library. Fields must be annotated with* @Option and must be public.*/ public class Options extends OptionsBase {@Option(name="file",abbrev='f',help="Path and name of file",category="Startup",defaultValue="")public String filePathAndName;@Option(name="verbose",abbrev='v',help="Enable verbose output",category="Startup",defaultValue="false")public boolean verbose; }@Option批注的必需“ name”元素指定“ long”選項名稱,而可選的“ abbrev”元素指定“ short”(單個字符)選項名稱。 @Option注釋的可選“ help”元素允許為選項提供“幫助”字符串,而必需的“ defaultValue”元素指定未明確指定選項時要使用的選項的默認值。
在Google-options中,“解析”階段是通過實例化與使用Option注釋的public字段與自定義類相關聯的OptionsParser實例,然后在該OptionsParser實例上調用“ parse”方法來完成的。 下一個代碼清單通過調用OptionsParser.parseAndExitUponError(String [])方法演示了這一點。
帶有Google選項的“解析”階段
final OptionsParser optionsParser = OptionsParser.newOptionsParser(Options.class); optionsParser.parseAndExitUponError(arguments);帶有google-options的“審訊”階段就像訪問自定義類上帶Option注釋的public字段一樣簡單,如下面的代碼清單所示。
谷歌選項的“審訊”階段
out.println("Path/file name is '" + options.filePathAndName+ "' and verbosity is '" + options.verbose + "'.");下一個代碼清單演示了如何使用OptionsParser方法describeOptions顯示幫助詳細信息。
使用google-options的“幫助”
private static void printUsage(OptionsParser parser) {out.println("Usage: java Main <Options>");out.println(parser.describeOptions(Collections.emptyMap(),OptionsParser.HelpVerbosity.LONG)); }以下屏幕快照演示了以上代碼清單。 第一個圖像描述了沒有提供參數時提供的“幫助”信息,第二個圖像描述了以各種長短形式表示的兩個主要命令行選項。 從第二張圖片可以看出,有趣的是google-options自動為boolean選項支持--noversion選項,顯式指定了沒有冗長性。
屏幕快照還顯示google-options對Guava有依賴性。
這是在選擇框架或庫以幫助使用Java進行命令行解析時要考慮的google選項的特征。
- google-options是使用Apache License 2.0許可的開源庫。
- google-options-1.0.0.jar的大小約為72 KB。
- 使用google-options的應用程序還需要在運行時類路徑上包括Guava,因為google-options依賴于Guava。 無論如何,對于使用Guava的應用程序來說,這并不是什么大問題。 但是,對于尚未使用Guava的小型應用程序,這可能比應用程序作者希望為基于命令行的簡單應用程序所具有的依賴性更大。
本系列中介紹的幾個基于Java的命令行處理庫都使用批注定義了期望的選項,這就是google-options使用的方法。 使用google-options進行命令行選項的基本處理是一個相對簡單的過程,但是對于不依賴Guava的簡單應用程序來說,新的Guava依賴項的成本可能太高了。
其他參考
- google-options GitHub頁面
- google-options Javadoc API文檔
- Maven存儲庫上的google-options 1.0.0
翻譯自: https://www.javacodegeeks.com/2017/09/java-command-line-interfaces-part-14-google-options.html
總結
以上是生活随笔為你收集整理的Java命令行界面(第14部分):google-options的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查看linux io负载(查看linux
- 下一篇: 监视器java_Java监视器绑定的超人