2011-01-04 30 views
6

Estoy muy interesado en cómo puedo averiguar cuáles son las jarras que las dependencias en el pom.xml de maven dependen de.¿Cómo averiguar los archivos jar de los que dependen las dependencias en pom.xml de maven?

Estoy acostumbrado a hacer la adición de bibliotecas (jarras) yo mismo en mi proyecto de aplicación web. Encontré esta necesidad cuando estaba tratando de configurar las muestras de primavera 3.0. Realmente no me gusta que todo tenga que pasar por maven con la primavera 3.0.x. En este punto, parece que no puedo profundizar más en el laberinto de dependencia del maven y aprender que parece una obligación. Pero realmente agradecería que alguien me diga una forma de descubrir esta información.

Por ejemplo, para el siguiente pom.xml, me gustaría saber de qué depende la dependencia con artifactId spring-context. (Puedo ver que depende del registro de commons, ya que el creador de la muestra lo excluye) quería usar slf4j en lugar de commons-logging.). Me gustaría averiguar el resto de las dependencias de la dependencia con artifactId spring-context, ¡y lo mismo para el resto de las dependencias! ¿Cómo puedo hacer esto?

<?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> 

Saludos cordiales,
Déspota

EDITAR (algunos seguimiento a la respuesta dada por Sean):
1) Descargar Maven (he descargado la versión 2.2.1) y siga las instrucciones de instalación dadas allí.
2) A continuación, abra el símbolo del sistema y vaya al directorio de pom.xml
3) Realice el comando "mvn dependency: tree" según lo recomendado. (Intenté usar -DoutputFile = "somePath" o -Dinclude = spring-context -> no estaba escribiendo en el archivo presentado en la ruta y estaba seleccionando todas las dependencias en lugar de spring-context - sin importar el comando general satisfacer). Esperar un tiempo para que el sistema para descargar toda la información necesaria y al final obtendrá algo como esto:

[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] --------------------------------------------------------------- 

Puede descargar los frascos utilizando Jarvana (sólo tiene que escribir jarvana + el nombre de la jarra) o puede usar el comando svn checkout.

La hibernación-validador: Tarro: 4.1.0.Final en Jarvana devuelve un error (no hay versión 4.1.0 Final -> Sólo 4.0.2 final
también org.codehaus.jackson mapeador-ASL ​​1.6 .4 no se pudo encontrar - solo 1.6.2 (lo mismo ocurre con el jackson-core-asl). Supongo que ocurriría lo mismo si usó maven para construir su proyecto.

Después de incluir todo lo necesario frascos, que comenzaron el servidor en modo de depuración y esto sucedió:

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 

esto significa que (creo) que esos frascos se encuentran dos veces borrarlos hecho. el trabajo para mi Las uniones como pom.xml no son válidas para esta muestra.

Me llevó mucho tiempo descargar los contenedores manualmente y "pelear" toda la configuración del proyecto, así que supongo que es mejor aprender algo de Maven si está intentando comenzar con Spring 3.0.

Respuesta

3

Usted no ha mencionado lo IDE que está utilizando. Si está utilizando Eclipse, instale el complemento M2Eclipse para Maven. Una vez instalado, tiene un excelente editor Maven pom.xml que puede mostrarle muchas cosas ... incluyendo un árbol interactivo, recursivo y de dependencia.

Se puede ver algunos videos sobre esta función aquí:

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

+0

Hola HDave, buenas características, ¡lo he comprobado! Pero tuve problemas con el editor de POM (creo). Mira esto: http://stackoverflow.com/questions/4604316/why-doesnt-commenting-a-dependency-in-the-pom-xml-with- m2eclipse-delete-the-ja. Gracias por tu respuesta. – despot

Cuestiones relacionadas