ぽすったーのようなCUIツールをJavaで作るときに悩んだ点

JavaCUIツールを作るうえで悩んだ点を。


まず、"java -jar hoge.jar"に引数を追加するのは冗長じゃないかなというところ。
解決案としてmvnbeansもやってるような、shやbatを用意してそのなかで"java -jar hoge.jar"を実行する。
そうすることで、"hoge command -c"というように短く出来る。
ただし、利用者にそのツール用の環境変数(どこにツールのjarがあるか)を設定してもらう必要がある。
まぁ、CUIで勝負するような人はその辺は大丈夫かな。


次に、依存jarの問題。
ぽすったーはTwitter4Jとargs4jに依存していて、使うときにはクラスパスにそれらのjarがなければならない。
またコンパイルするときにも必要で、ぽすったーはMaven2を使っているんだけど、Twitter4Jがリポジトリ上にないので自分のローカルリポジトリにインストールしておく必要がある。
解決策はこれまたmvnbeansがやってるようにmaven-assembly-pluginを使って、libフォルダに依存jarを置いてマニュフェスとファイルにクラスパスを通すのを書いてやればいいらしい。
それで配布にはアーカイブにして渡す。
Twitter4JはBSDライセンス、args4jはMITライセンスで、一緒にしても著作権表示をすれば問題ないかと。
ただし、ライセンス問題がある場合はどうすればいいんだろうか。
ライセンス問題があると、やっぱりjarをユーザに落としてもらう必要があるかな。
またこの方法ではなく、FatjarやOne-jarといったテクニックを使うのもあり。
この方法だと配布にはjarひとつだけなのでお手軽。
問題はMaven2からどうやればいいのか、という点。
あと、ライセンスはこちらも同様、混ぜるな危険がありそう。


現時点ではこんな感じで、id:t_yano曰く、誰しも一度は通る道、ということなので他の人にも参考になるかな。
それにしてもJavaでここらへんがややこしいと再認識したところ:-p