2011-01-04 11 views
6

Jestem bardzo zainteresowany jak mogę dowiedzieć się, jakie są słoiki, że zależności w pom.xml maven są zależne od.Jak określić słoiki, od których zależą zależności w pom.xml użytkownika?

Jestem przyzwyczajony do samodzielnego dodawania bibliotek (słoików) do mojego projektu aplikacji internetowej. Natknąłem się na tę potrzebę, gdy próbowałem skonfigurować próbki w wersji 3.0. Naprawdę nie podoba mi się, że wszystko musi przejść przez maven wiosną 3.0.x. W tym momencie wydaje mi się, że nie mogę zagłębić się w labirynt uzależnienia od mavenów i nauczyć się, że wygląda na konieczną. Ale byłabym wdzięczna, gdyby ktoś mógł mi powiedzieć, w jaki sposób mogę znaleźć te informacje.

Na przykład dla następującego pom.xml, chciałbym wiedzieć, od czego zależy zależność od kontekstu artefaktu. (Widzę, że to zależy od logowania commons, ponieważ twórca próbki wyklucza go - chciał użyć slf4j zamiast logowania commons.). Chciałbym poznać resztę zależności dla zależności z artefaktem w kontekście wiosennym, i tak samo dla pozostałych zależności! Jak mogę to zrobić?

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

poważaniem,
Despot

EDIT (niektóre śledzić na odpowiedź udzieloną przez Seana):
1) Pobierz Maven (pobrałem wersja 2.2.1) i postępuj zgodnie z instrukcjami instalacji tam podanymi.
2) Następnie otwórz wiersz polecenia i przejdź do katalogu pom.xml
3) Wykonaj polecenie "zależność mvn: drzewo" zgodnie z zaleceniami. (Próbowałem użyć -DoutputFile = "somePath" lub -Dinclude = spring-context -> nie zapisywało się w pliku przedstawionym na ścieżce i wybierało wszystkie zależności zamiast kontekstu sprężynowego - bez względu na ogólne polecenie wystarczać). Odczekaj chwilę, aby system ściągnąć wszystkie potrzebne informacje iw końcu dostaniesz coś takiego:

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

można pobrać słoiki z wykorzystaniem Jarvana (wpisz jarvana + nazwisko słoika) lub może użyć polecenia svn checkout.

Hibernacja-walidator: słoik: 4.1.0.Final w Jarvana zwraca błąd (nie ma Ostateczna wersja 4.1.0 -> 4.0.2 tylko końcowy
także org.codehaus.jackson-mapper-npm 1.6 .4 nie można znaleźć - tylko 1.6.2 (to samo odnosi się do jackson-core-asl) .Myślę, że to samo by się stało, gdybyś użył maven do zbudowania twojego projektu

Po tym, jak zawarłem wszystkie potrzebne słoiki, zacząłem serwer w trybie debugowania i tak się stało:

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 

oznacza to (chyba), że te słoje występują dwukrotnie usuwanie ich zrobić. praca dla mnie. Szwy takie jak pom.xml nie są poprawne dla tego przykładu.

Zajęło mi zbyt wiele czasu, aby ręcznie pobrać słoiki i "zwalczyć" całą konfigurację projektu, więc domyślam się, że najlepiej jest nauczyć się Mavena, jeśli próbujesz zacząć od wersji 3.0.

Odpowiedz

8

Wykonanie mvn dependency:tree i wyświetli listę wszystkich zależności projektu.

referencyjny:

+0

Thanks Sean! Pracowałem nad tą kwestią do tej pory. Udało mi się znaleźć zależności i pobrać je za pomocą jarvana (można to zrobić za pomocą wiersza poleceń za pomocą polecenia svn checkout). Aby uzyskać więcej, napisałem i EDYTUJ dział w moim pytaniu! – despot

3

Nie wspominając co IDE używasz. Jeśli korzystasz z Eclipse, zainstaluj wtyczkę M2Eclipse dla Maven. Po zainstalowaniu ma świetny edytor Mason pom.xml, który może pokazać ci wiele rzeczy ... w tym interaktywne, rekurencyjne drzewo zależności.

można zobaczyć kilka filmów na tej funkcji tutaj:

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

+0

Hi HDave, ładne funkcje - sprawdziłem! Ale wpadłem na problemy z edytorem POM (chyba) - sprawdź to: http://stackoverflow.com/questions/4604316/why-doesnt-commenting-a-dependency-in-the-pom-xml- with- m2eclipse-delete-the-ja. Dzięki za odpowiedź. – despot

Powiązane problemy