2011-01-04 3 views
6

मुझे में बहुत दिलचस्पी है, मैं कैसे पता लगा सकता हूं कि मैवेन के pom.xml पर निर्भरता पर निर्भर करती है।मैर के बारे में पता लगाने के लिए कि मेवेन के pom.xml पर निर्भरता किस पर निर्भर करती है?

मुझे अपने वेब एप्लिकेशन प्रोजेक्ट में पुस्तकालयों (जार) को जोड़ने के लिए उपयोग किया जाता है। जब मैं वसंत 3.0 नमूने को कॉन्फ़िगर करने की कोशिश कर रहा था, तो मुझे इस आवश्यकता में आया। मैं वास्तव में नापसंद करता हूं कि सब कुछ वसंत 3.0.x के साथ मेवेन के माध्यम से जाना है। इस बिंदु पर ऐसा लगता है कि मैं मेवेन की निर्भरता भूलभुलैया में गहरी खुदाई नहीं कर सकता और सीखना जरूरी दिखता हूं। लेकिन अगर मैं कोई मुझे बता सकता हूं कि मैं इस जानकारी को ढूंढ सकता हूं तो मैं वास्तव में सराहना करता हूं।

उदाहरण के लिए, निम्नलिखित pom.xml के लिए, मैं जानना चाहता हूं कि आर्टिफैक्ट के साथ निर्भरता क्या वसंत-संदर्भ पर निर्भर करता है। (मैं देख सकता हूं कि यह कॉमन्स-लॉगिंग पर निर्भर करता है, क्योंकि नमूने के निर्माता इसे छोड़कर - कॉमन्स-लॉगिंग के बजाय slf4j का उपयोग करना चाहते थे।)। मैं आर्टिफैक्ट के साथ निर्भरता के लिए शेष निर्भरताओं को जानना चाहता हूं, वसंत-संदर्भ, और बाकी निर्भरताओं के लिए भी! मैं यह कैसे कर सकता हूँ?

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

सधन्यवाद,
तानाशाह

संपादित करें (कुछ शॉन द्वारा दिए गए जवाब पर अनुवर्ती कार्रवाई):
1) डाउनलोड Maven (मैंने डाउनलोड संस्करण 2.2.1) और वहां दिए गए इंस्टॉलेशन निर्देशों का पालन करें।
2) ओपन कमांड प्रॉम्प्ट से और pom.xml
3 की निर्देशिका पर जाएं 3) सलाह के अनुसार "एमवीएन निर्भरता: पेड़" कमांड करें। (मैंने -DoutputFile = "somePath" या -डिन्टर = वसंत-संदर्भ -> यह पथ में प्रस्तुत फ़ाइल में नहीं लिखा था और यह वसंत-संदर्भ के बजाय सभी निर्भरताओं का चयन कर रहा था - चाहे कोई भी सामान्य आदेश नहीं होगा पर्याप्त)। प्रणाली सभी आवश्यक जानकारी डाउनलोड करने के लिए के लिए कुछ समय के लिए प्रतीक्षा करें और अंत में आप कुछ इस तरह मिल जाएगा:

[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 का उपयोग कर जार डाउनलोड कर सकते हैं (बस टाइप jarvana + जार का नाम) या आप svn चेकआउट कमांड का उपयोग कर सकते हैं।

हाइबरनेट-सत्यापनकर्ता: जार: Jarvana में 4.1.0.Final (एक त्रुटि कोई 4.1.0 अंतिम संस्करण है देता है -> केवल 4.0.2 अंतिम
इसके अलावा org.codehaus.jackson-नक्शाकार-एएसएल 1.6 .4 नहीं मिला - केवल 1.6.2 (जो जैक्सन-कोर-एएसएल पर जाता है)। मुझे लगता है कि अगर आप अपनी परियोजना बनाने के लिए मेवेन का इस्तेमाल करते हैं तो ऐसा ही होगा।

बाद में सभी आवश्यक जार, मैं डिबग मोड में सर्वर शुरू कर दिया और यह हुआ:

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 

इसका मतलब यह है (मुझे लगता है कि) है कि उन जार दो बार पाए जाते हैं उन्हें किया इसे हटाने से। मेरे लिए नौकरी Pom.xml की तरह सीम इस नमूने के लिए मान्य नहीं है।

मेरे लिए जार मैन्युअल रूप से डाउनलोड करने और सभी प्रोजेक्ट कॉन्फ़िगरेशन "लड़ने" के लिए बहुत अधिक समय लगता है, इसलिए मुझे लगता है कि यदि आप स्प्रिंग 3.0 से शुरू करने का प्रयास कर रहे हैं तो कुछ मेवेन सीखना सबसे अच्छा है।

उत्तर

8

mvn dependency:tree निष्पादित करें और यह सभी परियोजना की निर्भरताओं को सूचीबद्ध करेगा।

संदर्भ:

+0

धन्यवाद शॉन! मैं अभी तक इस मुद्दे पर काम कर रहा था। मैं निर्भरता ढूंढने में कामयाब रहा और जारवाना का उपयोग करके उन्हें डाउनलोड किया (svn checkout कमांड का उपयोग कर कमांड प्रॉम्प्ट के माध्यम से किया जा सकता है)। मेरे प्रश्न में मैंने और अधिक लिखा और संपादित किया है अनुभाग! – despot

3

आप आप क्या आईडीई उपयोग कर रहे हैं का उल्लेख नहीं था। यदि आप ग्रहण का उपयोग कर रहे हैं तो Maven के लिए M2Eclipse प्लगइन स्थापित करें। एक बार स्थापित होने के बाद इसमें एक उत्कृष्ट मेवेन pom.xml संपादक है जो आपको कई चीजें दिखा सकता है ... एक इंटरैक्टिव, रिकर्सिव, निर्भरता पेड़ सहित।

आप यहाँ इस सुविधा पर कुछ वीडियो देख सकते हैं:

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

+0

हाय एचडीएवी, अच्छी विशेषताएं - मैंने इसे चेक आउट किया! लेकिन मैं पीओएम संपादक (मुझे लगता है) के साथ समस्याओं में भाग गया - इसे जांचें: http://stackoverflow.com/questions/4604316/why-doesnt-commenting-a- निर्भरता-in-the-pom-xml-with- m2eclipse हटाना-ja। आपके उत्तर के लिए धन्यवाद। – despot

संबंधित मुद्दे

 संबंधित मुद्दे