2011-01-04 4 views
6

私は非常に興味がありますどのようにmavenのpom.xmlの依存関係がに依存しているか調べるにはどうすればよいでしょうか。mavenのpom.xmlの依存関係が依存するjarを理解するにはどうすればよいですか?

私は、自分のWebアプリケーションプロジェクトでライブラリ(jars)を自分で追加することに慣れています。私はこの必要性に遭遇しました。私はスプリング3.0サンプルを設定しようとしていました。私は本当に嫌いなのは、すべてが春3.0.xでmavenを通過しなければならないということです。この時点では、私はMavenの依存性の迷路の中で深く掘り下げることができないと思うし、それは必須のように見える。しかし、誰かが私にこの情報を見つけ出す方法を教えてもらえれば本当に感謝しています。

たとえば、次のpom.xmlの場合、artifactIdスプリングコンテキストの依存性がどのようなものであるかを知りたいと思います。 (サンプルの作成者はそれを除外しているので、commons-loggingに依存していることがわかります。commons-loggingではなくslf4jを使用したいと思っています)。 私は、artifactIdスプリングコンテキストとの依存関係の残りの依存関係、残りの依存関係については同じことを知りたいと思います!これどうやってするの?

<?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>org.springframework.samples</groupId> 
<artifactId>mvc-ajax</artifactId> 
<name>mvc-ajax</name> 
<packaging>war</packaging> 
<version>1.0.0-SNAPSHOT</version> 
<properties> 
    <org.springframework.version>3.0.5.RELEASE</org.springframework.version> 
    <org.slf4j.version>1.6.1</org.slf4j.version> 
</properties> 
<dependencies> 

    <!-- Spring --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${org.springframework.version}</version> 
     <exclusions> 
      <!-- Exclude Commons Logging in favor of SLF4j --> 
      <exclusion> 
       <groupId>commons-logging</groupId> 
       <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <!-- Logging --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>${org.slf4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jcl-over-slf4j</artifactId> 
     <version>${org.slf4j.version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>${org.slf4j.version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.16</version> 
     <scope>runtime</scope> 
    </dependency> 

    <!-- JSR 303 with Hibernate Validator --> 
    <dependency> 
     <groupId>javax.validation</groupId> 
     <artifactId>validation-api</artifactId> 
     <version>1.0.0.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>4.1.0.Final</version> 
    </dependency> 

    <!-- Joda Time --> 
    <dependency> 
     <groupId>joda-time</groupId> 
     <artifactId>joda-time</artifactId> 
     <version>1.6.2</version> 
     <scope>runtime</scope> 
    </dependency> 

    <!-- Jackson JSON Mapper --> 
    <dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-mapper-asl</artifactId> 
     <version>1.6.4</version> 
    </dependency> 

    <!-- Servlet --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 

    <!-- Test --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.7</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>${org.springframework.version}</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 
<repositories> 
    <!-- For Hibernate Validator --> 
    <repository> 
     <id>org.jboss.repository.release</id> 
     <name>JBoss Maven Release Repository</name>   
<url>https://repository.jboss.org/nexus/content/repositories/releases</url> 
     <snapshots><enabled>false</enabled></snapshots>   
    </repository>  
</repositories> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.5</source> 
       <target>1.5</target> 
       <showWarnings>true</showWarnings> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>install</id> 
        <phase>install</phase> 
        <goals> 
         <goal>sources</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
</project> 

種類よろしく、
専制君主

EDIT(一部はショーンによって与えられた答えにフォローアップ):
1)Mavenをダウンロードしてください(私はバージョン2.2.1をダウンロード)し、そこに記載されているインストール手順に従ってください。
2)開いているコマンドプロンプトより、pom.xmlのディレクトリに移動します
3) "mvn dependency:tree"コマンドをアドバイスしてください。 (私は、-DoutputFile = "somePath"または-Dinclude = spring-context - を使用してみましたが、パスに表示されたファイルには書かれていませんでした。一般的なコマンドに関係なく、すべての依存関係を選択していました。十分である)。システムは、すべての必要な情報をダウンロードするためにしばらく待ってから、最後に、あなたがこのようなものでしょう:あなたはJarvanaを使用してjarファイルをダウンロードすることができ

[INFO] [dependency:tree {execution: default-cli}] 
[INFO] org.springframework.samples:mvc-ajax:war:1.0.0-SNAPSHOT 
[INFO] +- org.springframework:spring-context:jar:3.0.5.RELEASE:compile 
[INFO] | +- org.springframework:spring-aop:jar:3.0.5.RELEASE:compile 
[INFO] | | \- aopalliance:aopalliance:jar:1.0:compile 
[INFO] | +- org.springframework:spring-beans:jar:3.0.5.RELEASE:compile 
[INFO] | +- org.springframework:spring-core:jar:3.0.5.RELEASE:compile 
[INFO] | +- org.springframework:spring-expression:jar:3.0.5.RELEASE:compile 
[INFO] | \- org.springframework:spring-asm:jar:3.0.5.RELEASE:compile 
[INFO] +- org.springframework:spring-webmvc:jar:3.0.5.RELEASE:compile 
[INFO] | +- org.springframework:spring-context-support:jar:3.0.5.RELEASE: 
     compile 
[INFO] | \- org.springframework:spring-web:jar:3.0.5.RELEASE:compile 
[INFO] +- org.slf4j:slf4j-api:jar:1.6.1:compile 
[INFO] +- org.slf4j:jcl-over-slf4j:jar:1.6.1:runtime 
[INFO] +- org.slf4j:slf4j-log4j12:jar:1.6.1:runtime 
[INFO] +- log4j:log4j:jar:1.2.16:runtime 
[INFO] +- javax.validation:validation-api:jar:1.0.0.GA:compile 
[INFO] +- org.hibernate:hibernate-validator:jar:4.1.0.Final:compile 
[INFO] +- joda-time:joda-time:jar:1.6.2:runtime 
[INFO] +- org.codehaus.jackson:jackson-mapper-asl:jar:1.6.4:compile 
[INFO] | \- org.codehaus.jackson:jackson-core-asl:jar:1.6.4:compile 
[INFO] +- javax.servlet:servlet-api:jar:2.5:provided 
[INFO] +- javax.servlet.jsp:jsp-api:jar:2.1:provided 
[INFO] +- javax.servlet:jstl:jar:1.2:compile 
[INFO] +- junit:junit:jar:4.7:test 
[INFO] \- org.springframework:spring-test:jar:3.0.5.RELEASE:test 
[INFO] --------------------------------------------------------------- 
[INFO] BUILD SUCCESSFUL 
[INFO] --------------------------------------------------------------- 
[INFO] Total time: 1 minute 8 seconds 
[INFO] Finished at: Tue Jan 04 16:53:45 CET 2011 
[INFO] Final Memory: 12M/25M 
[INFO] --------------------------------------------------------------- 

を(ちょうどjarvana + jarファイルの名前を入力します)かsvn checkoutコマンドを使用できます。

休止-バリ:ジャー:Jarvanaで4.1.0.Finalがエラーを返す(何4.1.0最終バージョンが存在しない -
>のみ4.0.2最終またorg.codehaus.jacksonマッパー-ASL 1.6 .4が見つかりませんでした - 1.6.2だけ(同じことがjackson-core-aslに行きます)あなたのプロジェクトを構築するためにmavenを使用した場合、同じことが起こると推測しています。

瓶は、私がデバッグモードでサーバーを開始し、これが起こった:。

TIME org.apache.catalina.loader.WebappClassLoader validateJarFile 
INFO: validateJarFile(C:\somePath\mvc-ajax3.0\WEB-INF\lib\jsp-api-2.1.jar) - jar not loaded. 
See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/jsp/JspPage.class 
TIME org.apache.catalina.loader.WebappClassLoader validateJarFile 
INFO: validateJarFile(C:\somePath\mvc-ajax3.0\WEB-INF\lib\servlet-api-2.5.jar) - jar not loaded. 
See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class 

これは、彼らが行って削除し、それらのjarファイルが二回検出されたこと(と思う)を意味します私の仕事。このサンプルでは、​​pom.xmlのような継ぎ目は無効です。

私はJarsを手動でダウンロードしてすべてのプロジェクト構成と "戦う"には時間がかかっていました。だから、Spring 3.0から始めようとしているなら、いくつかのMavenを学ぶことをお勧めします。

答えて

8

mvn dependency:treeを実行すると、すべてのプロジェクトの依存関係が一覧表示されます。

参考:

+0

感謝ショーンを!私は今まで問題に取り組んでいました。依存関係を見つけてjarvanaを使ってダウンロードしました(svn checkoutコマンドを使ってコマンドプロンプトを使って実行できます)。もっと私の質問にセクションを書いて、編集してください! – despot

3

あなたが使用しているIDEは言及しませんでした。 Eclipseを使用している場合は、Maven用のM2Eclipseプラグインをインストールします。一度インストールすると、対話的で再帰的な依存関係ツリーを含む多くのことを示すことができる優れたMaven pom.xmlエディタが用意されています。

あなたはここで、この機能にいくつかの動画を見ることができます:

http://m2eclipse.sonatype.org/overview-of-the-m2eclipse-pom-editor.html

+0

こんにちはHDave、素敵な機能 - 私はそれをチェックアウト!しかし、私はPOMエディタ(私は思う)に問題がありました - これをチェックしてください:http://stackoverflow.com/questions/4604316/why-doesnt-commenting-a-dependency-in-the-pom-xml-with- m2eclipse-delete-the-jaです。ご回答有難うございます。 – despot

関連する問題