javascript
Java命令行界面(第20部分):JSAP
JSAP ( Java Simple Argument Parser )2.1是本系列文章的第二十篇,重點(diǎn)是處理Java的命令行參數(shù)。 JSAP頁(yè)面描述了該庫(kù)存在的原因:“我在Internet上找到了幾個(gè)解析器,所有解析器都處理了開關(guān),但是在解析返回類型和配置文件方面,都沒(méi)有我想要的多功能性。”
JSAP提供了相當(dāng)多的靈活性,但付出了一些復(fù)雜性的正常代價(jià)。 幸運(yùn)的是,JSAP提供了一個(gè)名為SimpleJSAP的類,它使使用JSAP完成簡(jiǎn)單任務(wù)變得更加容易。 JSAP文檔以這種方式表達(dá)了這一觀點(diǎn): “如果您想減少處理命令行的代碼量,JSAP提供了一個(gè)SimpleJSAP,可以為您完成大部分工作。” 下一個(gè)代碼清單演示了在單個(gè)(盡管很冗長(zhǎng))語(yǔ)句中使用SimpleJSAP來(lái)定義預(yù)期的命令行選項(xiàng)。
JSAP的“定義”階段
final SimpleJSAP jsap = new SimpleJSAP("Main Application","Demonstrate JSAP",new Parameter[]{new FlaggedOption("file", STRING_PARSER, NO_DEFAULT, REQUIRED, 'f', "file", "File path/name."),new Switch("verbose", 'v', "verbose", "Requests verbose output." )});對(duì)于上面的代碼清單,我使用靜態(tài)導(dǎo)入來(lái)減少此“定義”代碼的冗長(zhǎng)性。 這些可以在GitHub上的完整代碼清單中看到。 上面的代碼定義了本系列中用于解析Java命令行參數(shù)的庫(kù)中所有文章中使用的兩個(gè)選項(xiàng):文件路徑/名稱和詳細(xì)程度。 單個(gè)字符'f'和'v'是短選項(xiàng)名稱,而長(zhǎng)選項(xiàng)名稱在它們各自的調(diào)用( file和verbose )之后。 請(qǐng)注意,命令行參數(shù)的“定義”也可以通過(guò)XML進(jìn)行配置 ,盡管此處未演示。
所述“語(yǔ)法分析”階段在司法制度評(píng)估方案與其中的調(diào)用另一單個(gè)語(yǔ)句實(shí)現(xiàn)解析(字符串[])上的實(shí)例方法SimpleJSAP返回的一個(gè)實(shí)例JSAPResult 。
JSAP的“解析”階段
final JSAPResult parsedResult = jsap.parse(arguments);JSAP的“詢問(wèn)”階段是通過(guò)調(diào)用parse方法返回的JSAPResult實(shí)例來(lái)完成的,如下面的代碼清單所示。
JSAP的“審訊”階段
out.println("File path/name is '" + parsedResult.getString("file") + "'."); out.println("Verbosity level is " + parsedResult.getBoolean("verbose"));JSAP將生成自動(dòng)用法和幫助語(yǔ)句。 下一個(gè)代碼清單演示了如何使用SimpleJSAP.messagePrinted()方法來(lái)確定是否發(fā)生了一些解析錯(cuò)誤,然后使用SimpleJSAP.getHelp()消息來(lái)訪問(wèn)自動(dòng)生成的“幫助”消息。
JSAP的“幫助”
if (jsap.messagePrinted()) {out.println(jsap.getHelp());System.exit( -1 ); }接下來(lái)的兩個(gè)屏幕快照演示了如何使用JSAP執(zhí)行本文中所示的代碼示例。 第一張圖片描述了未提供所需的-f / --file標(biāo)志時(shí)打印的用法說(shuō)明。 第二幅圖描繪了基于JSAP的示例代碼的正常行為。
選擇框架或庫(kù)來(lái)幫助Java進(jìn)行命令行解析時(shí),需要考慮JSAP的特征。
- JSAP是開源的,并獲得了次級(jí)GNU公共許可證 (LPGL)的許可 。
- JSAP-2.1.jar JAR文件的大小約為68 KB,基本功能不需要第三方依賴。
- 從XML加載JSAP配置的能力(本文未涵蓋)確實(shí)需要XStream 。
- 《 JSAP手冊(cè)》更詳細(xì)地討論了當(dāng)有其他可用的Java命令行解析替代方法時(shí), 為什么編寫JSAP的原因 。
- JSAP被其他產(chǎn)品使用 , 受到了一些用戶的好評(píng) ,并且已在Groovy中代替內(nèi)置的 Apache Commons CLI使用 。
JSAP似乎是較舊的基于Java的命令行解析庫(kù)中較流行的一種。 像本文中演示的那樣,基本功能相對(duì)容易使用,但是還可以提供更多的靈活性和可定制性,以滿足更復(fù)雜的需求。
其他資源
- JSAP v2.1:Java簡(jiǎn)單參數(shù)解析器
- SourceForge上的JSAP
- JSAP – Java簡(jiǎn)單參數(shù)解析器(v2.1)手冊(cè)
- MvnRepository上的JSAP
- JSAP API文檔 (Javadoc)
- 解析命令行參數(shù)– JSAP
- Groovy的命令行參數(shù)解析 (使用JSAP)
翻譯自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-20-jsap.html
總結(jié)
以上是生活随笔為你收集整理的Java命令行界面(第20部分):JSAP的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 安卓平板鼠标箭头怎么设置(安卓平板 鼠标
- 下一篇: Spring中的异步和事务性事件侦听器