2011-03-29 17 views
6

के साथ ट्रांजिटिव तृतीय पक्ष निर्भरता मैं कैसंड्रा नोएसक्यूएल डेटाबेस का उपयोग करने वाले अनुप्रयोग विकसित कर रहा हूं और मैं वेब इंटरफ़ेस जोड़ रहा हूं। मेरे पास 2 परियोजनाएं हैं: कैसंड्रा-एक्सेस (यह प्रोजेक्ट डीएएल है) और वेब (यह प्रोजेक्ट वेब एप्लिकेशन है)।मेवेन

परिदृश्य सरल है। कैसंड्रा-एक्सेस पर हेक्टर.जर पर निर्भरता है जो मैवेन रिपोजिटरी में नहीं है। स्थापित फ़ाइल और मैं माता पिता पोम में मेरी भंडार की सूची: तो मैं स्थापित mvn के माध्यम से अपने स्थानीय भंडार को यह निर्भरता जोड़ा

<repositories> 
     <repository> 
     <id>loc</id> 
     <url>file://${basedir}/../mvn-local-repository</url> 
    </repository> 
</repositories> 

वेब परियोजनाओं में पोम मैं कैसेंड्रा का उपयोग पर निर्भरता गयी। लेकिन जब मैं डेटाबेस से पढ़ा हैलो दुनिया के साथ वेब एप्लिकेशन शुरू करता हूं तो मुझे classNotFound अपवाद मिल रहा है जैसे हेक्टर.जर कक्षा पथ पर नहीं है। जब मैं एमवीएन स्वच्छ लिखता हूं तो वेब प्रोजेक्ट के परिणामी युद्ध को स्थापित करता है जिसमें WEB-INF/lib में hector.jar शामिल नहीं है। यह मेरे सिद्धांत की पुष्टि करता है।

उस युद्ध को कैसे प्राप्त किया जाए सभी ट्रांजिटिव निर्भरताओं को प्राप्त करें? मैंने सोचा कि सभी निर्भरताएं जो स्कोप संकलन (जो डिफ़ॉल्ट है) में कॉपी की जाएंगी।

वेब परियोजनाओं पोम:

<dependency> 
     <groupId>net.product</groupId> 
     <artifactId>cassandra-access</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </dependency> 

कैसेंड्रा का उपयोग पोम:

<dependency> 
    <groupId>me.prettyprint</groupId> 
    <artifactId>hector</artifactId> 
    <version>0.7.0</version> 
</dependency> 
+0

मैं पाया है ऊपर पाठ के रूप में अच्छी तरह से काम करता है। मुझे अभी पीओएम में चेतावनी मिली है जो मैवेन को सभी पर निर्भर निर्भरताओं को शामिल नहीं करती है। ऐसी स्थिति को डीबग करने का सबसे अच्छा तरीका एमवीएन निर्भरता का उपयोग कर रहा है: पेड़-एक्स –

उत्तर

1

यह शायद नहीं इष्टतम समाधान, लेकिन यह मेरे लिए काम करता है: की lib निर्देशिका में हेक्टर जार डाल कैसंड्रा का उपयोग कैसेंड्रा का उपयोग पोम में जोड़ें:

<dependency>  
    <groupId>%HECTOR_JAR_GROUP_ID%</groupId> 
    <artifactId>%HECTOR_JAR_ARTIFACT_ID%</artifactId> 
    <version>%HECTOR_JAR_VERSION%</version> 
    <scope>system</scope> 
     <systemPath>${basedir}/lib/%HECTOR_JAR_NAME%</systemPath> 
</dependency> 

उसके बाद निम्न प्लग-इन जोड़ते:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>copy-dependencies</id> 
      <phase>package</phase> 
      <goals> 
       <goal>copy-dependencies</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${project.build.directory}/lib</outputDirectory> 
      </configuration> 
     </execution> 
    </executions> 
</plugin>