2011-08-15 21 views
25

में क्लासपाथ नहीं जोड़ता है मेरे पास एक मैवेन प्रोजेक्ट है, जो कि मैं ग्रहण पर काम कर रहा हूं।मैवेन ग्रहण परियोजना

मैवेन ग्रहण का उपयोग करता हूं: क्लासपाथ उत्पन्न करने के लिए ग्रहण, लेकिन ... यह कभी ग्रहण परियोजना पर कक्षापथ जोड़ता नहीं है। मैंने मेवेन-ग्रहण-प्लगइन की कोशिश की है, मैंने एम 2 एक्लिप्स प्लगइन की कोशिश की है, लेकिन इससे कोई फर्क नहीं पड़ता कि मैं क्या करता हूं, मुझे कक्षा शुरू करने के लिए क्लासपाथ प्रविष्टियां नहीं मिल सकती हैं। मेरे पास कई बिल्ड त्रुटियां हैं, यहां तक ​​कि सोचा था कि मेवेन पूरी तरह से कान बनाता है।

कोई दिशानिर्देश?

किसी भी उत्तर के लिए धन्यवाद!

अद्यतन: यहाँ मेरी जड़ classpath है:

<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
    <classpathentry kind="src" path="core/src/main/java"/> 
    <classpathentry excluding="**" kind="src" output="target/classes" path="core/src/main/resources"/> 
    <classpathentry kind="src" path="client/src/main/java"/> 
    <classpathentry kind="src" path="client/src/main/resources"/> 
    <classpathentry kind="src" path="junit_server/src/main/java"/> 
    <classpathentry kind="src" path="initializer/src/main/java"/> 
    <classpathentry kind="src" path="initializer/src/main/webapp"/> 
    <classpathentry kind="src" path="site/src/main/webapp"/> 
    <classpathentry kind="src" path="core/src/test/java"/> 
    <classpathentry kind="src" path="core/src/test/resources"/> 
    <classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
    <classpathentry exported="true" kind="var" path="M2_REPO"/> 
    <classpathentry kind="output" path="target/classes"/> 
</classpath> 

UPDATE2:

<?xml version="1.0" encoding="UTF-8"?> 
<projectDescription> 
    <name>coreisp_back</name> 
    <comment></comment> 
    <projects> 
    </projects> 
    <buildSpec> 
     <buildCommand> 
      <name>org.eclipse.jdt.core.javabuilder</name> 
      <arguments> 
      </arguments> 
     </buildCommand> 
     <buildCommand> 
      <name>org.eclipse.m2e.core.maven2Builder</name> 
      <arguments> 
      </arguments> 
     </buildCommand> 
    </buildSpec> 
    <natures> 
     <nature>org.eclipse.m2e.core.maven2Nature</nature> 
     <nature>org.eclipse.jdt.core.javanature</nature> 
    </natures> 
</projectDescription> 

उत्तर

15

मेवेन ग्रहण प्लगइन द्वारा उत्पन्न सेटअप m2e/m2eclipse के साथ संगत नहीं है। यदि आप मेवेन और एक्लिप्स का एक साथ उपयोग करना चाहते हैं तो आपका सबसे अच्छा कोर्स मैवेन ग्रहण प्लगइन द्वारा जेनरेट किए गए सेटअप में किसी भी संशोधन को हटाने और अपने मेवेन प्रोजेक्ट को आयात करने के लिए m2e का उपयोग करना है।

+1

मेरी अज्ञानता के लिए खेद है, लेकिन "आपके सेटअप में कोई भी संशोधन हटाएं" से आपका क्या मतलब है? मेरी परियोजना निर्देशिका (और मॉड्यूल) से .classpath, .project और .settings निकालें? –

+2

हां। आदर्श रूप से आपको वापस जाना चाहिए कि आपका प्रोजेक्ट 'एमवीएन ग्रहण: ग्रहण' चलाने से पहले कैसे था। –

+0

मान लीजिए कि आप बिना किसी समस्या के कमांड लाइन से अपनी परियोजना का निर्माण करते हैं। –

6
  • अपग्रेड इंडिगो (3,7)
  • ग्रहण करने के लिए m2e प्लग-इन इंस्टॉल (http://www.eclipse.org/m2e/download/: यह मेरा .project है)।
  • उपयोग फ़ाइल> आयात> मौजूदा Maven परियोजनाओं enter image description here
+1

मेरे पास वर्तमान में इंडिगो है, मैंने प्लगइन स्थापित किया है, और प्रोजेक्ट आयात किया है। कोई सौदा नहीं ... –

1

यह m2eclipse पर निर्भर है। जब आप ऐसा करते हैं, तो आपकी सभी निर्भरताओं को maven/m2eclipse द्वारा नियंत्रित किया जाता है, इसलिए आपका .classpath बहुत कम हो जाता है।

प्रोजेक्ट आर्किटेक्चर की अवधि में, आप एक ग्रहण परियोजना प्रति मेवेन पोम चाहते हैं। प्रत्येक परियोजना .classpath एकमात्र स्रोत, JRE और Maven इंजेक्शन शामिल हैं:

<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
    <classpathentry kind="src" output="target/classes" path="src/main/java"/> 
    <classpathentry kind="src" output="target/test-classes" path="src/test/java"/> 
    <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> 
    <classpathentry kind="output" path="target/classes"/> 
</classpath> 

(निर्भर करता है समायोजित जहां स्रोत होते हैं)।

मुझे संदेह है कि आपकी कई त्रुटियां निर्भरताओं में डुप्लिकेट प्रविष्टियों से आती हैं क्योंकि आप उन्हें मैन्युअल रूप से (अतिरिक्त। क्लासपाथ प्रविष्टियां) और मैवेन के माध्यम से इंजेक्ट करते हैं।

आप m2eclipse में स्थानीय वर्कस्पेस रिज़ॉल्यूशन को भी सत्यापित करना चाहते हैं (डिफ़ॉल्ट रूप से चालू होना चाहिए)।

+0

अद्यतन: मेरे पास एक मास्टर पीओएम है, और कुछ मॉड्यूल हैं। वह प्रविष्टि मेरे क्लासपाथ पर नहीं है, लेकिन क्या मुझे इसे मुख्य क्लासपाथ, या मॉड्यूल क्लासपाथ पर जोड़ना चाहिए? –

+0

यहां, मैंने इसे अपने .classpath में जोड़ा है: -> इसने बिल्ड पथ पर "मेवेन निर्भरता" बनाई है, लेकिन प्रोजेक्ट अभी तक सही ढंग से बनाया नहीं जा रहा है। आपको त्रुटियों को नहीं बता सकता है, क्योंकि वे 10k से अधिक हैं:/ –

5

आपको बिल्ड-हेल्पर-मैवेन-प्लगइन के साथ pom.xml में अतिरिक्त स्रोत फ़ोल्डर्स जोड़ने की आवश्यकता है। फिर

mvn ग्रहण चलाएँ: स्वच्छ ग्रहण: ग्रहण

उदाहरण के लिए इस pom.xml ..

<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>mygroup</groupId> 
    <artifactId>artifact</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>artifact</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>build-helper-maven-plugin</artifactId> 
       <version>1.7</version> 
       <executions> 
        <execution> 
         <id>add-source</id> 
         <phase>generate-sources</phase> 
         <goals> 
          <goal>add-source</goal> 
         </goals> 
         <configuration> 
          <sources> 
           <source>client/src/main/java</source> 
          </sources> 
         </configuration> 
        </execution> 
        <execution> 
         <id>add-resource</id> 
         <phase>generate-resources</phase> 
         <goals> 
          <goal>add-resource</goal> 
         </goals> 
         <configuration> 
          <resources> 
           <resource> 
            <directory>client/src/main/resources</directory> 
            <targetPath>resources</targetPath> 
           </resource> 
          </resources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

इस .classpath

<classpath> 
    <classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/> 
    <classpathentry kind="src" path="src/main/java" including="**/*.java"/> 
    <classpathentry kind="src" path="client/src/main/java" including="**/*.java"/> 
    <classpathentry kind="src" path="client/src/main/resources" excluding="**/*.java"/> 
    <classpathentry kind="output" path="target/classes"/> 
    <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
</classpath> 

यकीन है कि फ़ोल्डरों मौजूद बनाओ उत्पन्न करता है, यदि पथ गलत है तो वे जोड़े नहीं जाएंगे। मेवेन लॉग में इसकी तलाश करें।

[जानकारी] को छोड़ गैर मौजूदा resourceDirectory/tmp/विरूपण साक्ष्य/src/मुख्य/संसाधनों

मेरे टीम ने पाया ग्रहण Maven प्लगइन्स Maven के माध्यम से हमारे पूरे ग्रहण config बनाने के लिए चुनने से अस्थिर हो सकता है,।

+1

इच्छा है कि मैं कई बार उठा सकता हूं ... – Brian

+0

शानदार .... बस अद्भुत। बहुत धन्यवाद –

1

डिफ़ॉल्ट रूप से एमवीएन इंस्टॉल स्वचालित रूप से ग्रहण में आयात नहीं होते हैं। तो, कमांड प्रॉम्प्ट से mvn इंस्टॉल करने के बाद। भागो निम्न आदेश:

mvn ग्रहण:

ग्रहण यह आपके ग्रहण परियोजना में सभी जार आयात करेगा और साथ ही classpath अद्यतन करेगा।

आपको उपरोक्त आदेश को निष्पादित करने की आवश्यकता है जब आप पहली बार अपने पीओएम पर एक नई निर्भरता जोड़ते हैं और एक एमवीएन संकलन या स्थापित करते हैं।

1

सबसे अधिक वोट किए गए उत्तर के अलावा, आपको अभी भी एक टूटी हुई परियोजना, 'मेवेन निर्भरता' (केप्लर) और कोई कक्षापथ संकल्प के साथ छोड़ा जा सकता है।

मेरे मामले में मेरे स्थानीय मैवेन रिपोजिटरी सेटिंग्स.एक्सएमएल को हटा दिया गया जब किसी तीसरे पक्ष के एसडीके ने खुद को अपडेट किया, फिर से शुरू करने के बाद ग्रहण उस सेटिंग्स.एक्सएमएल फ़ाइल के संदर्भ को स्पष्ट करना प्रतीत होता था।

एक बार जब मैं फ़ाइल वापस रखता हूं और इसे मैवेन> इंस्टॉलेशन> ग्लोबल सेटिंग्स: /home/andy/.m2/settings.xml में संदर्भित करता हूं, तो प्रत्येक प्रोजेक्ट की सफाई करने के लिए सभी आवश्यक क्लासपाथ रिज़ॉल्यूशन को किक-स्टार्ट किया जाता है। बस बांटने को।

मेरे लिए, जिसके परिणामस्वरूप फ़ाइलों की तरह देखा:

.classpath

<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
    <classpathentry kind="src" output="target/classes" path="src/main/java"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> 
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/> 
    <classpathentry kind="output" path="target/classes"/> 
</classpath> 

.project

<?xml version="1.0" encoding="UTF-8"?> 
<projectDescription> 
    <name>jemh-ao</name> 
    <comment></comment> 
    <projects> 
    </projects> 
    <buildSpec> 
     <buildCommand> 
      <name>org.eclipse.jdt.core.javabuilder</name> 
      <arguments> 
      </arguments> 
     </buildCommand> 
     <buildCommand> 
      <name>org.eclipse.m2e.core.maven2Builder</name> 
      <arguments> 
      </arguments> 
     </buildCommand> 
    </buildSpec> 
    <natures> 
     <nature>org.eclipse.jdt.core.javanature</nature> 
     <nature>org.eclipse.m2e.core.maven2Nature</nature> 
    </natures> 
</projectDescription> 
1
एक समस्या मैं के लिए एक परियोजना परिवर्तित करने के बाद है में चलाने

maven मुझे रन कॉन्फ़िगरेशन को साफ़ करने की आवश्यकता है क्योंकि रूपांतरण क्लासपाथ को confi में अपडेट नहीं करता है मूर मेवेन-निर्भरता क्लासपाथ। Eclipse Run Configuration classpath should show maven dependencies

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