できるできるとは聞いたことがありましたが、実際にコマンドを打ったことがなかったので試してみました。
dependency:tree
http://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html
例えば、こんなpom.xmlを用意します。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>myapp.hello</groupId> <artifactId>myapp-hello</artifactId> <packaging>jar</packaging> <version>0.0.1-SNAPSHOT</version> <name>myapp-hello</name> <repositories> <repository> <id>maven.seasar.org</id> <name>The Seasar Foundation Maven2 Repository</name> <url>http://maven.seasar.org/maven2</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>maven.seasar.org</id> <name>The Seasar Foundation Maven2 Repository</name> <url>http://maven.seasar.org/maven2</url> </pluginRepository> </pluginRepositories> <dependencies> <dependency> <groupId>org.seasar.container</groupId> <artifactId>s2-framework</artifactId> <version>2.4.46</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.1</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <goals> <goal>java</goal> </goals> </execution> </executions> <configuration> <mainClass>HelloWorld</mainClass> </configuration> </plugin> </plugins> </build> </project>
これに対して、以下のコマンドを実行すると
$ mvn dependency:tree [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building myapp-hello 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ myapp-hello --- [INFO] myapp.hello:myapp-hello:jar:0.0.1-SNAPSHOT [INFO] +- org.seasar.container:s2-framework:jar:2.4.46:compile [INFO] | +- aopalliance:aopalliance:jar:1.0:compile [INFO] | +- jboss:javassist:jar:3.4.ga:compile [INFO] | +- ognl:ognl:jar:2.6.9-patch-20090427:compile [INFO] | +- commons-logging:commons-logging:jar:1.1:compile [INFO] | \- junit:junit:jar:3.8.2:compile [INFO] \- org.apache.commons:commons-lang3:jar:3.1:compile [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.142s [INFO] Finished at: Thu Dec 06 23:47:01 JST 2012 [INFO] Final Memory: 9M/105M [INFO] ------------------------------------------------------------------------
プロジェクトのライブラリへの依存関係を、その先のライブラリへの依存関係を含めてツリー表示してくれます。
ちなみに、ツリーの部分だけ別ファイルに出したい場合は、以下のように指定すればいいようです。
$ mvn dependency:tree -DoutputFile=dependency.txt [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building myapp-hello 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ myapp-hello --- [INFO] Wrote dependency tree to: /xxxxx/maven-dependency/dependency.txt [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.256s [INFO] Finished at: Thu Dec 06 23:50:19 JST 2012 [INFO] Final Memory: 9M/105M [INFO] ------------------------------------------------------------------------
内容は、こんな感じ。
$ cat dependency.txt myapp.hello:myapp-hello:jar:0.0.1-SNAPSHOT +- org.seasar.container:s2-framework:jar:2.4.46:compile | +- aopalliance:aopalliance:jar:1.0:compile | +- jboss:javassist:jar:3.4.ga:compile | +- ognl:ognl:jar:2.6.9-patch-20090427:compile | +- commons-logging:commons-logging:jar:1.1:compile | \- junit:junit:jar:3.8.2:compile \- org.apache.commons:commons-lang3:jar:3.1:compile
その他、ツリー表示するスコープを絞ったりもできるようですよ。詳しくは、ドキュメントを…。