2011-04-05 49 views
2

我有一個現有的java命令行程序,需要大量參數並使用優秀的args4j來解析它們。如何捆綁maven mojo中的現有java可執行文件

我現在想製作一個maven插件mojo,它將運行此應用程序中包含的Java代碼。到目前爲止,我已經嘗試了基本的方法:將每個和任何命令行參數複製到一個mojo參數中。 Bu我覺得這個例外情況很無聊,容易出錯,因爲maven mojo javadoc註釋比args4j註解要少得多。

所以,使用maven 3,有沒有更好的方法讓我的可執行文件作爲maven mojo運行? 哦,請不要談論exec-maven-plugin,因爲我發現它在這種情況下太有限了(我的可執行文件將不得不使用項目設置和用戶配置文件混合運行,我想簡單地調用maven-exec-插件不會做的伎倆)。

+0

關於我們談論的論據有多少? – khmarbaise 2011-04-05 13:58:01

+0

@khmarbaise在10和20之間 – Riduidel 2011-04-05 14:58:59

+0

我認爲很多這些參數都有默認值?我知道很多插件有更多的參數。 – khmarbaise 2011-04-05 15:55:04

回答

1

雖然@khmarbaise's answer在一般觀點上是完全正確的,但我想稍微擴展一下。

我的獨立命令行應用程序使用args4j,但我認爲使用Commons CLI或(甚至更多)JCommander可以相當好地複製該進程,這依賴於主bean中相同的命令行註釋。

所以,我所做的是一個maven mojo,它使用自省,獲得主要的bean命令行參數列表。 對於這些參數中的每一個,我都希望一個屬性出現在項目/設置信息中。如果此屬性存在,則使用該選項和最終關聯構建一個假命令行。我可以使用args4j來填充我的bean,然後使用它的主命令運行這個bean。一旦我瀏覽了所有選項(存儲爲maven屬性),我就可以使用args4j來填充我的bean,然後使用它的主命令運行這個bean。

我認爲這種方法可能相當普遍,只要你的應用程序有一組標誌和一個無參數run()方法。

2

唯一的方法是通過mojo參數,因爲這是Maven插件的Maven方式。

我錯過了定義一個屬性文件,其中包含配置作爲替代mojo參數。但我認爲對於Maven插件來說,最佳實踐是擁有Mojo參數。

+0

我很抱歉不接受你的答案,但我找到了一個更好的解決方案,並在稍後的答案中解釋它。請原諒我的行爲。 – Riduidel 2011-04-06 08:39:06

相關問題