एक उत्पन्न स्रोत फ़ोल्डर के साथ Intellij का उपयोग करने में असमर्थ


87

संबंधित प्रश्न IntelliJ IDEA और / या मावेन को कैसे कॉन्फ़िगर करें स्वचालित रूप से jaxb2-maven-plugin का उपयोग करके उत्पन्न जावा स्रोत कोड के साथ निर्देशिकाओं को जोड़ने के लिए?

मेरे पास एक कस्टम प्लगइन है जो कि target/generated-sources(यहाँ कोई टूलनाम नहीं नोट करें) के तहत स्रोत उत्पन्न करता है । इसलिए मुझे स्रोत मिलते हैं target/generated-sources/com/mycompany... आदि।

इस प्रारूप को बिल्कुल भी नहीं बदला जा सकता है, इसलिए क्या मैं Intellij को एक स्रोत फ़ोल्डर के रूप में जोड़ने में कॉन्फ़िगर कर सकूंगा। अब तक, मैं देख सकता हूं कि Intellij ने target/generated-sources/comस्रोत फ़ोल्डर के रूप में जोड़ा है ।

कृपया ध्यान दें कि मेरे पास प्लगइन को कॉन्फ़िगर करने का विकल्प नहीं है!

अद्यतन 1 : मैं इस तथ्य से सहमत नहीं हूं कि मैं अपने उत्पन्न स्रोतों को टूल नाम फ़ोल्डर के तहत रखना चाहिए। यह एक अच्छा सम्मेलन हो सकता है, लेकिन अगर मेरे पास केवल एक जनरेटर है तो मुझे वहां डालने की कोई आवश्यकता नहीं है? फिर से, मेरे pom.xml में मेरे पास एक resourcesअनुभाग है जो स्पष्ट रूप से इंगित करता है कि target/generated-sourcesइसे स्रोत फ़ोल्डर के रूप में माना जाना चाहिए। यह ग्रहण में पूरी तरह से ठीक काम करता है इसलिए मुझे पता नहीं है कि इंटेलीज मेरी सेटिंग्स का सम्मान क्यों नहीं करेगा।

टीएल; डीआर -> जब मैं target/generated-sourcesसंसाधन अनुभाग में pom.xmlडालूं तो इंटेलीज को क्लासपैथ में जोड़ने के target/generated-sources/comलिए अति उत्साही क्यों है ?


1
एक पर नजर डालें stackoverflow.com/questions/10735380/...
वादज़्मी

इस समाधान का प्रयास करें, यह आपकी समस्या को हल कर सकता है। समाधान के लिए यहाँ क्लिक करें
असद अब्दिन

इस समाधान का प्रयास करें, यह आपकी समस्या को हल कर सकता है। समाधान के लिए यहां क्लिक करें
असद अब्दिन

जवाबों:


141

आप केवल "स्रोत" निर्देशिका के रूप में उस फ़ोल्डर को जोड़ने के लिए प्रोजेक्ट संरचना को बदल सकते हैं।

प्रोजेक्ट संरचना → मॉड्यूल →generated-sources फ़ोल्डर पर क्लिक करें और इसे एक sourcesफ़ोल्डर बनाएँ।

या:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.4</version>
    <executions>
        <execution>
            <id>test</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>${basedir}/target/generated-sources</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>

4
यह विकल्प दिलचस्प लगता है। मैं इस सेटिंग को हर बार खो देता हूं, जिसे मैं "mvan idea: idea" चलाता हूं। क्या इस "वर्कअराउंड" के साथ मावेन विचार प्लगइन घोषित करने का एक तरीका है?
कन्नन एकनाथ मरा

3
यदि आप इसे निर्माणाधीन स्रोत फ़ोल्डर में नहीं जोड़ सकते हैं क्योंकि यह IDEA बिल्ड फ़ोल्डर को बाहर करता है।
NBW

1
@NBW आप मैन्युअल रूप से, हाँ नहीं कर सकते। लेकिन अगर आप अपने मॉड्यूल को हटाते हैं और फिर इसे फिर से जोड़ते हैं, (इस प्लगइन के साथ), विचार सब कुछ सही ढंग से पहचानता है।
ज़ोल्टन

3
आप किसी भी फ़ोल्डर पर राइट क्लिक कर सकते हैं और "मार्क डायरेक्टरी" के रूप में उपयोग कर सकते हैं
Pieter De Bie

5
हालाँकि मेरे pom.xml में यह स्निपेट था, लेकिन IDEA ने उत्पन्न स्रोतों को नहीं देखा। रनिंग mvn idea:ideaने मेरे मामले में समस्या हल कर दी। रिकॉर्ड के लिए।
mmdemirbas

83

मैं मावेन (स्प्रिंगबूट एप्लिकेशन) समाधान का उपयोग कर रहा हूं:

  1. राइट क्लिक प्रोजेक्ट फ़ोल्डर
  2. मावेन का चयन करें
  3. का चयन करें सूत्रों का कहना है और अद्यतन फ़ोल्डर उत्पन्न

फिर, Intellij स्वचालित रूप से उत्पन्न स्रोतों को परियोजना में आयात करता है।


अपने आप को फ़ोल्डर संरचना को गड़बड़ाने के बिना काम करता है!
szab.kel

यह उत्तर उच्चतर होना चाहिए - स्वीकृत उत्तर की तुलना में बहुत अधिक सुविधाजनक है
स्टुसब्रो

5
ध्यान दें कि Intellij 2019.1 के नवीनतम संस्करण में, आप मावेन मेनू में दूसरा बटन क्लिक कर सकते हैं (दाईं ओर, शीर्ष पर, दूसरे बटन पर
मावेन

मुझे अपनी मावेन सेटिंग्स की भी जाँच करनी थी। xml जो कि गलत नहीं डिफ़ॉल्ट रेपो की ओर इशारा कर रहा था
जोनाथन

आकर्षण जैसा काम करता है!
marcin.programuje

22

ग्रेडेल के साथ, जब भी आप ग्रेडिंग सेटिंग्स को रिफ्रेश करेंगे प्रोजेक्ट सेटिंग्स क्लियर हो जाएगी। इसके बजाय आपको अपने build.gradle में निम्नलिखित पंक्तियों (या समान) को जोड़ने की आवश्यकता है, मैं कोटलिन का उपयोग कर रहा हूं:

sourceSets {
    main {
        java {
            srcDir "${buildDir.absolutePath}/generated/source/kapt/main"
        }
    }
}

यह मेरे लिए IntelliJ के परियोजना आयात और दोनों के लिए काम किया gradle idea। धन्यवाद! :)
क्रिस कूपर

हाँ - सबसे अच्छा टिप उपलब्ध है। जॉर्ज को गुस्सा आ रहा था!
होबोजोबू

मेरे लिए काम करता है। मैंने इस समाधान का उपयोग मेपस्ट्रोक, स्प्रिंगफ्रैमवर्क और कंपोनेंटमॉडल = "स्प्रिंग" परिदृश्य के साथ किया
dwilda

16

जोड़

पर जाएं परियोजना संरचना - मॉड्यूल - स्रोत फ़ोल्डर और पाते हैं target/generated-sources/antlr4/com/mycompany- क्लिक करें गुण संपादित करें और सेट पैकेज उपसर्ग के लिए com.mycompany

यही कारण है कि हम सोर्स डायर पर पैकेज उपसर्ग सेट कर सकते हैं ।


अलग लेकिन संबंधित समस्या यहाँ


1
यह फिक्स केवल वही है जो मेरे लिए DAYS ऑफ़ लुकिंग में काम कर रहा है। धन्यवाद!
सीएनडीसन

ओह धन्यवाद, मैंने अभी इंटेलीज को अपडेट किया है और उन्होंने अपने आइकन बदल दिए हैं। मैंने नहीं सोचा था कि नारंगी फ़ोल्डर का मतलब होगा कि यह एक स्रोत नहीं है।
पीटर डी ब्यू

आधे दिन से मैं इसकी तलाश में हूं। मेरे लिए antlr4 के साथ काम किया। धन्यवाद!
पायोत्र टेम्प्स

1
ANTLR के लिए = = 4.5.3 (शायद पहले भी,), जब तक मेरा व्याकरण स्थित था src/main/antlr4/<path-to-package>/, तब यह अंदर दिखाई देगा target/generated-sources/antlr4/<path-to-package>। IntelliJ ने स्वचालित रूप से सही निर्देशिका को एक स्रोत रूट के रूप में चिह्नित किया और कोई पैकेज उपसर्ग आवश्यक नहीं था। मुझे संदेह है कि इस सुधार की आवश्यकता तब होती है जब लोग अपने व्याकरण को सीधे इसमें डालते हैं src/main/antlr4, जिसे अक्सर किसी कारण से अनुशंसित किया जाता है।
एलेक्स रिंकिंग

5

जिसने भी लिखा कि प्लगइन ने बड़ा समय खराब कर दिया। यह ऐसा करने का तरीका नहीं है!

किसी भी वर्कअराउंड एक बड़ी हैक होगी, प्लगइन डेवलपर को उसके बग से अवगत कराएगी।

क्षमा करें, बस यही करना है।


ठीक है यहाँ एक हैक है, सीधे अपने प्लगइन के निष्पादन के बाद, निर्देशिका को कहीं और ले जाने के लिए एंटीरन प्लगइन का उपयोग करें:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
      <execution>
        <phase>process-sources</phase>
        <configuration>
          <target>
            <move todir="${project.build.directory}/generated-sources/toolname/com"
                  overwrite="true">
                <fileset dir="${project.build.directory}/generated-sources/com"/>
            </move>
          </target>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
</plugin>

इस उदाहरण में, toolnameकुछ भी द्वारा प्रतिस्थापित किया जाना चाहिए जो विशिष्ट रूप से उस प्लगइन की पहचान करता है जिसने कोड बनाया और comनिर्मित पैकेज की जड़ के लिए खड़ा है। यदि आपके पास कई पैकेज जड़ें हैं, तो आपको संभवतः कई <move>कार्यों की आवश्यकता है।

लेकिन अगर प्लगइन फ़ोल्डर को स्रोत फ़ोल्डर के रूप में जोड़ता है, तो आप खराब हो गए हैं।


धन्यवाद सीन। मैंने वास्तव में देखा कि इंटेलीज लक्ष्य / उत्पन्न-स्रोत / कॉम के साथ-साथ लक्ष्य / उत्पन्न-स्रोत दोनों को जोड़ता है (इसे "संसाधन" अनुभाग में स्पष्ट रूप से स्रोत निर्देशिका के रूप में जोड़ा जाता है)। क्या पहली बात को रोकने के लिए कोई अन्य तरीका है। यदि नहीं, तो मैं आपके समाधान की कोशिश करूंगा।
कन्नन एकनाथ मरा

1
हां, लेखक को उपयोग करना चाहिए target/generated-sources/my-tool
विल्स्टिमिल ओवैस्क


1

मुझे अपनी परियोजना को आयात करते समय कुछ महीने पहले एक्लिप्स के साथ एक ही मुद्दा था। अब मैं इंटेलीज के साथ भी ऐसा ही था। यहाँ कैसे किसी ने मुझे IntelliJ में इसे हल करने में मदद की:

मेनू => दृश्य => उपकरण विंडो => मैवेन प्रोजेक्ट वसंत_सुंदर मूल्य => कॉन्फ़िगरेशन में चलाएं, क्लीन इंस्टॉल चुनें। यह एक साफ स्थापित करना चाहिए और इसके बाद आपको कक्षाएं देखने में सक्षम होना चाहिए यहाँ छवि विवरण दर्ज करें


1

मॉड्यूल सेटिंग में "अपवर्जित" को हटाकर इसे हल किया (प्रोजेक्ट पर राइट क्लिक करें, "ओपन मॉड्यूल सेटिंग्स")। यहाँ छवि विवरण दर्ज करें


0

केवल काम करने की स्थिति, कई प्रयासों के बाद, छिपी हुई थी .idea फ़ोल्डर को रूट प्रोजेक्ट फ़ोल्डर से निकालना और इसे Intellij से फिर से आयात करना था


0

मैं पहले Dahahaun द्वारा की गई टिप्पणी पर अद्यतन करना चाहता था , लेकिन जैसा कि यह मेरी पहली बार टिप्पणी है, आवेदन ने मुझे अनुमति नहीं दी।

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

मैंने सही से project_name -> maven -> अपडेट प्रोजेक्ट पर क्लिक किया और प्रोजेक्ट को अपडेट किया, जिसने मेरे ग्रहण प्रोजेक्ट के लिए स्रोत फ़ोल्डर के रूप में लक्ष्य / उत्पन्न-स्रोतों को जोड़ा।

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.4</version>
    <executions>
        <execution>
            <id>test</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>${basedir}/target/generated-sources</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>

0

मैंने mvn जेनरेट-रिसोर्सेस को चलाया और फिर / टार्गेट / जेनरेट किए गए रिसोर्स फोल्डर को "सोर्स" (प्रोजेक्ट स्ट्रक्चर -> प्रोजेक्ट सेटिंग्स -> मॉड्यूल्स -> सिलेक्ट / टार्गेट / जेनरेटेड-रिसोर्स -> ब्लू "सोर्स" आइकन पर क्लिक करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.