読者です 読者をやめる 読者になる 読者になる

きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

開発ネットワークにp2リポジトリを立てる

開発ネットワークはインターネットにアクセスできず、プラグインのメンテナンスが大変だ。


dropinsで頑張るやり方もあるが、知らぬ間に誰かが継ぎ足した感じになったり、複数人に対したメンテナンスが悪い気がする。


現在試しているの以下のプラグインたち。
subversiveとconnector
eclemma
websphere developement tools


こいつらをluna sr2 linux 64bitにねじ込む。


content.jarとartifact.jarを持つ、
いわゆるp2形式なものは簡単だ。


難易度が高いのはfindbugs
提供形態がしょぼい。
こいつについては、旧来のUpdate Managerの形式のようだ。pluginsの部分しかzipになってない。
面倒臭い。
URL直接叩いてsite.xmlをぱくる。
site.xmlにfeatureのパスが書かれているので、
そこにあるjarを取ってくる。
featureのjarにはfeature.xmlしか入っておらず、そこにpluginのパスが書かれているので、これまたURL直接叩いて取ってくる。
必要なものが揃ったので、これで構築した。
dropinsにfeatureなしのpluginのみで認識するものもあるが、findbugsは認識されなかったみたいで、仕方なくのことです。
ひょっとしたらURL直接叩けばartifact.jarがいたのかな。。


subversiveはp2形式なので、解凍して置くだけで、とっとと更新サイトになる。
更新サイトとはいっても特定バージョンしか入ってない。
余計なsite.xmlが混ざっていたかもしれないが、放置しといた。たぶん互換性のためにあるものです。
connectorは3種類あるが、オールマイティなallplatformを使うように改めるつもりだ。


プラットフォーム限定
オールプラットフォーム
プラットフォーム非依存(svnkitの最新jar)


いまは最後の単一Jarをdropinsに放り込んでるが、手法がそこだけ違ってくるので、オールプラットフォームにでもしておく。
でも、javaHL使う予定はない。


checkstyleとeclemmaはp2形式で何も問題ない。


wdtは、Web Developement Toolsのフィーチャーが入らなかった。
いちおう前提となるluna sr2 jeeなんだが。
Linuxだからか??
gmf-rutimeが足らず
com.ibm.icu.textが足らず
emf.workbenchが足らず
どんどん芋づる式に足らないものが増えていくし、そんなバージョンどこにあるんだよってなる。
やめた、やめた。
そのフィーチャーは諦める。


p2リポジトリを作ったあとは、
それらをシエルを書いてインストールする。
まずeclipseはtar -xzfして用意。


org.eclipse.equinox.p2.directorは超むずい。


dropinsに放り込むことができるのかと思ったら、ちょっと認識が違っていた。
そこは諦めた。


installIUsするのに、先にlistさせてみるも、
なんだか数が多くてどれを選べばいいか分かりにくいこともあるので、いちどGUIを立ち上げて調べたほうがいい。


profileオプションは付けなくてもいい。
よくSDKProfileを指定している例があるが、それはRCP次第だろう。もしくは自分のやりたいことと違うのかも。
指定したいのであれば、
eclipse/cofiguration/config.iniの中に書いてある。


destinationオプションにはeclipseのフォルダを指す。


bundlepoolオプションは指定しない。
bundlepoolの指定先をdropinsのプラグイン単位フォルダにしている例があるけれど、けっこうそこがハマったところだ。
初回のプラグインのフォルダに、2回目以降のプラグインのJarたちが入っていってしまう。
2回目のプラグインのフォルダには、無味乾燥なartifact.xmlができてしまう。
これはダメパターンだ。
それなのでdropinsに置くのは諦めた。
しかも、一度dropinsを消しても、初回のbundlepoolの場所を覚えているので面倒臭い。
起動時にもチェックしているので、裏で余計なログがでている。
諦めたので、eclipse/featuresおよびeclipse/pluginsに入っていくことになる。


repositoryオプションは足らない依存関係を解決するためのすべてを書かないといけないのだが、インターネットにアクセスできない以上、自前の更新サイトしか指定していない。
そもそものluna sr2に備わっているものは、destinationの指定で解決してくれているようだ。
0.0.0のバージョンが見つからないと出たりするなら、それはきっと指定が間違ってる。


多少の妥協はあれど、やってみたかったことはおおよそ実現できそうだ、