2009-08-04

Maven2 依存関係を調べるツール



Maven2を使用してDependencyの設定をしていると、依存関係の依存関係(推移的依存関係というらしい)によって想定外の参照をしているときがあって困っていた。
たとえば、今回Strutsの1.3.8(または1.3.9)とSpringFrameworkを使用していると、起動できない。
javax.servlet.UnavailableException: org.apache.commons.digester.Digester.parse(Ljava/net/URL;)Ljava/lang/Object;
というエラーがでる。
調べると、どうやらStruts1.3.8にはcommons-digesterは1.8が必要とのこと。
確かにMaven2が落としてくるcommons-digesterは1.7になっている。
でもStrutsのpom.xmlをみてもちゃんとcommons-digesterは1.8を参照している。
ということは他のjarが参照しているのが悪さをしているな、ということになるけど、どいつが悪いのかがわからず、探すと「Dependency Analyzer」というツールを発見。
こいつは便利だ。
pom.xmlを読み込ますと、最初はびっくりする画面になるが、「Filter by group id」でcommons-digesterにフィルターをかけると一目瞭然。
原因はspring-modules-validation0.8にあることが判明。
spring-modules-validation0.8のpom.xmlをみると確かにcommons-digesterは1.7を参照している。
なので、自分のpom.xmlにcommons-digester1.8を参照するように変更し、無事解決。
いやぁ、このDependency Analyzerは久々のヒット。