日々常々

ふつうのプログラマがあたりまえにしたいこと。

WeldとJava SEとGradleとIDEAと

Weldを使ってみようと思いました。普段DIはSpring一本槍なのですが、それもどうかと思ったので。

opengl-8080さんやKazuhiraさんのようないつもの方々が既にやられていることだし、すぐできるだろうと思ってました。

qiita.com d.hatena.ne.jp

やるまでは。甘かったです。すぐできなかった。でも、あーだこーだとやってたら一応解決したので書いておきます。

結論からいうと、*.classがあるディレクトリにbeans.xmlさんがいる必要があります。Gradleとかでclassesとresourcesとかディレクトリが分かれてると、resourcesにbeans.xmlさんが行っちゃうので、動かない。

気づいてみればよくある話なんだけど、だいたいそんなもんだよね(´・ω・`)

やったこと

  • とりあえずドキュメントの通りにやってみる
    • なんか動かない
  • CDIわかってないせいだと思ってJSR読んでみる
    • 特に解決しない
  • ざっくりWeldのソース読んでみる
    • 特に解決しない
  • ログ入れる
    • jclの警告は出てたけどdebugも出すよーにした
    • build/resources/main しか読んでないことに気づく
  • Gradleでコピる
    • 動いた
    • けどIDEAでrebuildしたら動かなくなる
  • beans.xml 無しで読むようにWeldいじる
    • 動きはした
    • けどまともな形にはならなかったし、やりすぎ感もある
    • やりたいのはCDIを一通り触ってみることであって、Weld本体をいじることではないんですよ!!!←
    • てかそのうち本体で対応するだろうし。。。
  • 実行時にコピるようにする
    • いまここ

ログは偉大だなとおもいました。まる。

まじめなことはGitHub

ブログに雑なこと書いて、GitHubのREADMEに真面目なことを書くというのはどうだろう。

と思ってREADMEみたけど、真面目でもなかった。棲み分け……。