एम 2 ई और मावेन उत्पन्न स्रोत फ़ोल्डरों को ग्रहण स्रोत फ़ोल्डर्स के रूप में


91

मेरे पास ग्रहण में एक मावेन परियोजना है और मावेन लक्ष्य हैं जो कोड बनाने के लिए एनोटेशन प्रोसेसर चलाते हैं। इस कोड के लिए आउटपुट फ़ोल्डर लक्ष्य / उत्पन्न-स्रोत / apt है।

इस उत्पन्न कोड को देखने के लिए ग्रहण करने के लिए मुझे ग्रहण परियोजना के लिए स्रोत फ़ोल्डर के रूप में लक्ष्य / उत्पन्न-स्रोत / उपयुक्त जोड़ना होगा।

हालाँकि, यह "Maven कॉन्फ़िगरेशन समस्या" प्रकार की त्रुटि के कारण होता है

प्रोजेक्ट कॉन्फ़िगरेशन pom.xml के साथ अद्यतित नहीं है। प्रोजेक्ट कॉन्फ़िगरेशन अद्यतन चलाएँ

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

एक शुद्ध मावेन का निर्माण करते समय, इन स्रोत फ़ोल्डरों को मावेन द्वारा निर्माण में शामिल किया जाएगा।

btw, मैंने मावेन एक्लिप्स प्लगइन के आधिकारिक एक्लिप्स रिलीज़ को अपग्रेड कर दिया है, एम 2 1.0 - जो कि एम 2 सीलिपसे हुआ करता था। मैं यह देखना चाहूंगा कि क्या मुझे मी 2 के पुराने प्लगइन पर वापस जाने से पहले मुझे मी 2 के प्लगइन के साथ काम करना चाहिए।

जवाबों:


105

आपको स्रोत निर्देशिका को बिल्ड-हेल्पर-प्लगइन के साथ संलग्न करना होगा ।

इस तरह:

 <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>${project.build.directory}/generated-sources/java/</source>
                </sources>
            </configuration>
        </execution>
    </executions>
 </plugin>

आपको यह भी करना होगा:

  • एक्लिप्स मार्केटप्लेस से "एप्ट एम 2 ई कनेक्टर" स्थापित करें। ऐसा करने के लिए अपने pom.xml के अवलोकन टैब में त्रुटि पर क्लिक करें और "डिस्कवर" चुनें।
  • सुनिश्चित करें कि बिल्ड-हेल्पर-मावेन-प्लगइन के लिए कोई प्लगइन निष्पादन फिल्टर नहीं हैं (देखें https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html )

4
जब m2e connector for build-helper-maven-pluginग्रहण
ब्रैड कपिट

मेरे लिए काम नहीं करता है। आप बिल्ड-हेल्पर-प्लगइन सेटअप पर विस्तृत कर सकते हैं?
केविन वोंग

प्लगइन स्रोत </ चरण> <लक्ष्य> <लक्ष्य> ऐड-सोर्स </ लक्ष्य> </ लक्ष्य> <कॉन्फ़िगरेशन> <स्रोत> <स्रोत> $ {project.build.directory} / उत्पन्न-स्रोत / जावा / </ स्रोत> <स्रोत> $ {project.build.directory} / jaxws / wsimport / java </ स्रोत> </ स्रोत> </ कॉन्फ़िगरेशन> </ निष्पादन> </ निष्पादन> </ plugin>
केविन वोंग

2
केप्लर के साथ, मुझे हेल्पर मावेन प्लगइन के लिए एम 2 कनेक्टर भी स्थापित करना पड़ा। (बस ग्रहण के maven pom एडिटर के अंदर अपना पोम खोलें और सबसे ऊपर लाल लिंक पर क्लिक करें)।
Snicolas

1
जहाँ तक मेरा बता सकते हैं, के रूप में build-helper-maven-pluginके साथ <version>के रूप में निर्दिष्ट 3.2.0(लेखन के रूप में नवीनतम), वहाँ अपार्टमेंट M2E कनेक्टर का उपयोग करने की कोई जरूरत नहीं है। वर्तमान में ग्रहण आईडीई 2020-06 पर काम कर रहा है, ग्रहण में एम्बेडेड मावेन 3.6.3 का उपयोग कर रहा है, और स्रोत फ़ोल्डर के साथ हमारी समस्याओं के साथ बहिष्करण (**) में स्रोत फ़ोल्डर निर्देशिका पथ को जोड़ने का प्रयास करने के बाद चले गए। (** (*। जावा) उनमें)।
21_48 पर tom_mai78101

80

त्रुटि संदेश पर राइट-क्लिक करें:

प्रोजेक्ट कॉन्फ़िगरेशन pom.xml रन प्रोजेक्ट कॉन्फ़िगरेशन अद्यतन के साथ अद्यतित नहीं है

समस्याओं को देखें और त्वरित फिक्स का चयन करें और डिफ़ॉल्ट अद्यतन प्रोजेक्ट कॉन्फ़िगरेशन का चयन करने के लिए समाप्त पर क्लिक करें । यह इसे ठीक करता है।


1
यह मेरे लिए भी काम करता है। यह स्वीकृत उत्तर क्यों नहीं है? लगता है स्वीकृत उत्तर बहुत अधिक है।
नील्स बस्जेस

14
@NielsBasjes यह स्वीकृत उत्तर नहीं है क्योंकि यह केवल सहायक नहीं है। जब आप ग्रहण में निर्माण पथ के लिए कुछ जोड़ते हैं, तो इसका मतलब है कि अब आप पीओएम के साथ सिंक नहीं कर रहे हैं, इसलिए चेतावनी। प्रोजेक्ट कॉन्फ़िगरेशन को अपडेट करने से अतिरिक्त निर्माण पथ प्रविष्टि को हटा दिया जाता है, जो कि शुरुआती समस्या थी।
फिल

4

M2e / maven / apt के नए संस्करणों पर स्विच करने के बाद, ... मेरे पास बिल्डरों द्वारा डुप्लिकेटेड फ़ाइलों की वजह से बिल्डप्लेपर द्वारा जोड़े गए फ़ाइलों की वजह से बिल्डर थे, इसलिए मुझे बिल्ड-अप से "apt-generate" -Folders निकालने की आवश्यकता थी।

Eclipse में समस्या को ठीक करने के लिए, "apt-generate" -folder को M2E में अपडेट मावेन कॉन्फ़िगरेशन के माध्यम से न जोड़ते हुए, मैंने इस समस्या को ठीक करने के लिए M2E प्लगइन लिखा है। यह maven-apt-plugin में प्रोजेक्ट के buildpath में कॉन्फ़िगर किए गए outputDirectories को जोड़ता है।

https://apt-m2e.googlecode.com


1
दुर्भाग्य से @Stefan Wo आपका प्लगइन पेज / रेपो अब googlecode.com पर 404 है; क्या आप इसे अपडेट करने का मन बनायेंगे, साथ ही एक्लिप्स मार्केटप्लेस में प्रवेश करेंगे? देखें marketplace.eclipse.org/content/apt-m2e-connector
maxxyme

3

एम 2 1.0 में मावेन प्लगइन्स की हैंडलिंग बदल गई है। आपको अपने कोड जनरेट करने वाले प्लगइन के लिए एक विशिष्ट m2e एक्सटेंशन की कमी हो सकती है। यहाँ सभी दस्तावेज हैं जिन्हें मैं खोजने में कामयाब रहा।

यह बग रिपोर्ट प्रासंगिक भी हो सकती है।


मुझे लगता है कि m2e नया है और इसमें बहुत से उत्कृष्ट विकास हैं
माइकल विल्स

2
मेरा मानना ​​है कि समस्या यह है कि सिर्फ m2eclipse परियोजनाओं के लिए मावेन प्लगइन्स को लागू करना, जैसा कि m2eclipse करते थे, बस ज्यादातर समय काम करने के लिए हुआ, लेकिन हमेशा सही काम करने की गारंटी नहीं थी। नया दृष्टिकोण संभावित रूप से अधिक ठोस है, लेकिन इसके लिए आवश्यक है कि कई मावेन प्लगइन्स में एक एम 2 प्रतिपक्ष हो।
निकोला मुसाती

2

https://bugs.eclipse.org/bugs/show_bug.cgi?id=350081

सीएक्सएफ-कोडेगन-प्लगइन में ही जीवन चक्र मैपिंग जोड़ने के लिए सीएक्सएफ जिरा ( 1 देखें ) पर अनुरोध । यह m2e 1.1 की आवश्यकता होगी, लेकिन मेरा मानना ​​है कि यह cxf परियोजना के बाहर निर्मित कनेक्टर से बेहतर दृष्टिकोण है, यह मानते हुए कि जीवनचक्र मानचित्रण एपीआई cxf-codegen-plugin और cxf की तुलना में कम बार बदल जाएगा।


0

आप डिस्कवरी कैटलॉग में उपलब्ध buildhelper m2e कनेक्टर का भी उपयोग कर सकते हैं। मैं ग्रहण 3.7 का उपयोग कर रहा हूं


0

वेब डेवलपर्स के लिए ग्रहण जावा ईई आईडीई। संस्करण: जूनो सेवा रिलीज़ 1

mvn archetype:generate \
   -DarchetypeGroupId=org.codehaus.mojo \
   -DarchetypeArtifactId=gwt-maven-plugin \
   -DarchetypeVersion=2.5.0

mvn clean install

पूरी तरह से काम करें।

लेकिन ग्रहण में मुझे Asinc वर्ग पर एक ही त्रुटि है।

प्रोजेक्ट पर बस F5 दबाएं। इस समस्या को ठीक करें।


0

यह वही था जो मैंने पाया था कि वसंत 3.1.1 का उपयोग करके अच्छा काम किया, जिसमें 3.0.6 संस्करण भी है। एक बार जब मैंने प्लगइन्स सेटअप प्राप्त किया और पोम के सही क्षेत्र में डाल दिया और jg स्रोतों को लक्ष्य / उत्पन्न-स्रोतों / cxf फ़ोल्डर में रखने के लिए argline और endorseddirs को शामिल किया तब maven ने स्रोतों को उत्पन्न किया।

....

 <properties>...

   <dependencyManagement>
      <dependencies>.....
   </dependencyManagement>

<dependencies>
   <dependency>....

</dependencies>



<!-- *************************** Build process ************************************* -->
<build>
    <finalName>eSurety</finalName>
    <plugins>
        <!-- Force Java 6 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <!-- Deployent on AS from console
        <plugin>
            <groupId>org.jboss.as.plugins</groupId>
            <artifactId>jboss-as-maven-plugin</artifactId>
            <version>${version.jboss.as.maven.plugin}</version>
        </plugin>
        -->

        <!-- wildbill added tomcat plugin -->
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.0</version>              
        </plugin>

        <!-- Surefire plugin before 2.9 version is buggy. No need to declare here,
              it's being referenced below w/ the version
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12</version>
        </plugin>
        -->

        <!-- developer added these -->   
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <compilerArguments>
                    <endorseddirs>target/generated-sources/cxf</endorseddirs>
                </compilerArguments>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12</version>
            <configuration>
                <forkMode>once</forkMode>
                <argLine>-Djava.endorsed.dirs=target/generated-sources/cxf</argLine>
            </configuration>
        </plugin>           
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <compilerArguments>
                    <endorseddirs>target/generated-sources/cxf</endorseddirs>
                </compilerArguments>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <forkMode>once</forkMode>
                <argLine>-Djava.endorsed.dirs=target/generated-sources/cxf</argLine>
            </configuration>
        </plugin>                       
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>                       
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>javax.xml.bind</groupId>
                        <artifactId>jaxb-api</artifactId>
                        <version>2.2</version>
                    </artifactItem>
                    <artifactItem>
                        <groupId>javax.xml.ws</groupId>
                        <artifactId>jaxws-api</artifactId>
                        <version>2.2</version>
                    </artifactItem>
                </artifactItems>
                <outputDirectory>target/generated-sources/cxf</outputDirectory>
            </configuration>                      
        </plugin>                                                 
    </plugins>
</build>



<!-- *********************** Profiles ************************************ -->
<profiles>
    <profile>
        <!-- When built in OpenShift the 'openshift' profile will be 
            used when invoking mvn. -->
        <!-- Use this profile for any OpenShift specific customization 
            your app will need. -->
        <!-- By default that is to put the resulting archive into the 
            'deployments' folder. -->
        <!-- http://maven.apache.org/guides/mini/guide-building-for-different-environments.html -->
        <id>projName</id>
        <build>
            <plugins>                                                   
                <plugin>
                    <groupId>org.apache.cxf</groupId>
                    <artifactId>cxf-codegen-plugin</artifactId>
                    <version>2.5.2</version>                        
                    <executions>
                        <execution>
                            <id>process-sources</id>
                            <phase>generate-sources</phase>                                                                                               
                            <configuration>
                                <fork>once</fork>
                                <additionalJvmArgs>-Djava.endorsed.dirs=target/generated-sources/cxf</additionalJvmArgs>                                          
                            </configuration>
                            <goals>                             
                                <goal>wsdl2java</goal>
                            </goals>
                        </execution>
                    </executions>                       
                    <dependencies>
                        <dependency>
                           <groupId>com.sun.xml.bind</groupId>
                           <artifactId>jaxb-impl</artifactId>
                           <version>2.2</version>
                        </dependency>
                        <dependency>
                           <groupId>com.sun.xml.bind</groupId>
                           <artifactId>jaxb-xjc</artifactId>
                           <version>2.2</version>
                        </dependency>
                     </dependencies>
                </plugin>

                <!-- Actual war created in default target dir -->
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.2</version>                                               
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

यदि आपका wsdl फोल्डर $ {आधारित} / src / main / Resources में है तो यह अपने आप मिल जाएगा

उम्मीद है की यह मदद करेगा! ~ Wildbill


0

किसी कारण के लिए आप बिल्ड हेल्पर प्लगइन का उपयोग सबसे आसान तरीका नहीं कर सकते (यद्यपि यह उतना सुविधाजनक और कुछ थकाऊ नहीं है) जो मैंने इस से निपटने के लिए पाया है:

  1. अपने स्वयं के प्रोजेक्ट या उप मॉड्यूल में उत्पन्न स्रोत कोड को अलग करें।
  2. जब आप मूल प्रोजेक्ट पर काम कर रहे हों, तो आप इस परियोजना को मुख्य रूप से बंद रखना चाहते हैं या ग्रहण में आयात नहीं करना चाहेंगे।
  3. जनरेट प्रोजेक्ट में जिन कोड की आवश्यकता होती है, वे सुनिश्चित करें कि अब जेनरेट सोर्स कोड प्रोजेक्ट पर मावेन पोम निर्भरता के माध्यम से निर्भर करते हैं।
  4. जब आपको जनरेट किए गए कोड को अपडेट करने की आवश्यकता हो, तो उत्पन्न कोड प्रोजेक्ट पर जाएं और चलाएं mvn install। अब Maven-> अपडेट प्रोजेक्ट पर राइट क्लिक करके और चुनकर मूल प्रोजेक्ट को रिफ्रेश करें ...

यह आम तौर पर उन परियोजनाओं के लिए अच्छी तरह से काम करता है जो कोड पीढ़ी जैसे कि SOAP WSDLs (Apache CXF) या डेटाबेस (jOOQ) से उत्पन्न कोड के लिए एक अर्ध स्थिर स्रोत का उपयोग करते हैं। APT और अन्य AspectJ की तरह कोड के लिए यह भी काम नहीं करता है क्योंकि आप स्रोत को अक्सर संपादित कर रहे हैं।


-1

बिल्ड हेल्पर प्लगइन के कॉन्फ़िगरेशन ने हमारे लिए काम किया।

लेकिन ध्यान रखें, कि गंतव्य फ़ोल्डर हमेशा एनोटेशन प्रसंस्करण के लिए उपयोग करने वाले प्लगइन के विन्यास के बराबर होना चाहिए।

उदाहरण के लिए मावेन-प्रोसेसर-प्लगइन लक्ष्य फ़ोल्डर $ {project.build.directory} / उत्पन्न-स्रोतों / उपयुक्त को डिफ़ॉल्ट के रूप में उपयोग करता है। यदि आप अपने उत्पन्न स्रोत फ़ाइलों के लिए एक और गंतव्य चाहते हैं, तो आप इसे नीचे दिखाए अनुसार टैग द्वारा सेट कर सकते हैं।

<plugin>
<groupId>org.bsc.maven</groupId>
                <artifactId>maven-processor-plugin</artifactId>
                <version>2.1.1</version>
                <executions>
                    <execution>
                        <id>process</id>
                        <goals>
                            <goal>process</goal>
                        </goals>
                        <phase>process-sources</phase>
                        <configuration>
                            <defaultOutputDirectory>apt_generated</defaultOutputDirectory>
                            <processors>
                                <processor>com.any.processor.invoker</processor>
                            </processors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

-3

यहाँ समाधान है

  1. मार्कर दृश्य (विंडो> दृश्य देखें) खोलें
  2. त्रुटि संदेश पर राइट-क्लिक करें
  3. क्विक फिक्स का चयन करें
  4. समाप्त पर क्लिक करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.