উত্পন্ন উত্স ফোল্ডার সহ ইন্টেলিজ ব্যবহার করতে অক্ষম


87

সম্পর্কিত প্রশ্ন জ্যাকসবি 2-ম্যাভেন-প্লাগইন ব্যবহার করে উত্পন্ন জাভা উত্স কোড সহ ডিরেক্টরিগুলি স্বয়ংক্রিয়ভাবে যুক্ত করতে ইন্টেলিজ আইডিইএ এবং / অথবা মাভেন কীভাবে কনফিগার করবেন?

আমার একটি কাস্টম প্লাগইন রয়েছে যা উত্স উত্পন্ন করে target/generated-sources(এখানে কোনও সরঞ্জামনাম নোট করুন)। সুতরাং আমি target/generated-sources/com/mycompany... ইত্যাদি উত্স পেতে ।

এই ফর্ম্যাটটি মোটেও পরিবর্তন করা যায় না, সুতরাং আমি ইন্টেলিজকে উত্স ফোল্ডার হিসাবে যুক্ত করার জন্য এটি কনফিগার করতে সক্ষম হব। এখন পর্যন্ত, আমি দেখতে পাচ্ছি যে ইন্টেলিজ target/generated-sources/comউত্স ফোল্ডার হিসাবে যুক্ত করেছে ।

দয়া করে নোট করুন যে আমার কাছে প্লাগইনটি কনফিগার করার বিকল্প নেই!

আপডেট 1 : আমি এই বিষয়টির সাথে একমত নই যে আমি আমার উত্পন্ন উত্সগুলি একটি সরঞ্জামের নাম ফোল্ডারের নীচে রেখেছি। এটি একটি ভাল কনভেনশন হতে পারে তবে আমার যদি কেবল একটি জেনারেটর থাকে তবে সেখানে এটি রাখার দরকার নেই? আবার, আমার pom.xML এ আমার একটি resourcesবিভাগ রয়েছে যা স্পষ্টভাবে নির্দেশ করে যে target/generated-sourcesউত্স ফোল্ডার হিসাবে বিবেচনা করা উচিত। এটি Eclipse এ পুরোপুরি সূক্ষ্মভাবে কাজ করে তাই আমি জানি না কেন ইন্টেলিজ আমার সেটিংসকে সম্মান করবে না।

টিএল; ডিআর -> আমি যখন target/generated-sourcesরিসোর্স বিভাগে রেখেছি তখন pom.xmlকেন ইন্টেলিজ ক্লাসপথে যুক্ত target/generated-sources/comহতে অত্যধিক হতাশ ?



এই সমাধানটি চেষ্টা করুন, এটি আপনার সমস্যা সমাধান করতে পারে। সমাধানের জন্য এখানে ক্লিক করুন
আসাদ আবদিন

এই সমাধানটি চেষ্টা করুন, এটি আপনার সমস্যা সমাধান করতে পারে। সমাধানের জন্য এখানে ক্লিক করুন
আসাদ আবদিন

উত্তর:


141

সেই ফোল্ডারটিকে "উত্স" ডিরেক্টরি হিসাবে যুক্ত করতে আপনি কেবল প্রকল্পের কাঠামো পরিবর্তন করতে পারেন।

প্রকল্পের কাঠামো → মডিউলগুলি the 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
এই বিকল্পটি আকর্ষণীয় বলে মনে হচ্ছে। "Mvn ধারণা: ধারণা" চালানোর সময় আমি এই সেটিংটি হারাব। এই "workaround" দিয়ে কোনও খাঁটি ধারণা প্লাগইন ঘোষণা করার কোনও উপায় আছে কি?
কান্নান একনাথ

4
আপনি যদি উত্পন্ন উত্স ফোল্ডারটি নির্মাণের অধীনে যোগ করতে পারবেন না কারণ IDEA বিল্ড ফোল্ডারটি বাদ দেয়।
এনবিডাব্লু

4
@ এনবিডাব্লু আপনি ম্যানুয়ালি পারবেন না, হ্যাঁ। তবে আপনি যদি নিজের মডিউলটি মুছুন এবং তারপরে এটি পুনরায় সরবরাহ করুন, (এই প্লাগইনটি সেট আপ সহ), ধারণা সবকিছুকে সঠিকভাবে চিনে ফেলবে।
জোল্টন

4
আপনি যে কোনও ফোল্ডারে ডানদিকে ক্লিক করতে পারেন এবং "হিসাবে চিহ্নিত ডিরেক্টরি" হিসাবে ব্যবহার করতে পারেন
পিটার ডি

4
যদিও আমার pom.xML এ এই স্নিপেটটি ছিল, IDEA উত্পন্ন উত্সটি দেখতে পায় নি। mvn idea:ideaআমার ক্ষেত্রে সমস্যাটি চালানো চলছে । রেকর্ডের জন্য।
মিমডিমিরবাস

82

আমি ম্যাভেন (স্প্রিংবুট অ্যাপ্লিকেশন) সমাধানটি ব্যবহার করছি:

  1. প্রজেক্ট ফোল্ডারে রাইট ক্লিক করুন
  2. ম্যাভেন নির্বাচন করুন
  3. উত্স উত্স এবং আপডেট ফোল্ডার নির্বাচন করুন

তারপরে, ইন্টেলিজ স্বয়ংক্রিয়ভাবে উত্পন্ন উত্সগুলি প্রকল্পে আমদানি করে।


নিজে নিজেই ফোল্ডারটির কাঠামো বিহ্বল না করে কাজ করে!
szab.kel

এই উত্তরটি উচ্চতর হতে হবে - গৃহীত উত্তরের চেয়ে অনেক বেশি সুবিধাজনক
stusrob

4
লক্ষ্য করুন যে ইন্টেলিজ 2019.1 এর সর্বশেষতম সংস্করণে, আপনি ম্যাভেন মেনুতে দ্বিতীয় বোতামটি ক্লিক করতে পারেন (ডানদিকে,
মাভেন সাইডবারটি

এছাড়াও আমি আমার ম্যাভেন settings.xml যে ডিফল্ট রেপো ভুল প্রতি নির্দেশ ছিল চেক করতে ছিল
জনাথন

মোহন মত কাজ!
marcin.programuje

22

গ্রেড সহ, আপনি যখনই গ্রেড সেটিংস রিফ্রেশ করবেন তখন প্রকল্পের সেটিংস সাফ হয়ে যাবে। পরিবর্তে আপনার বিল্ড.gradle এ আপনাকে নিম্নলিখিত লাইনগুলি (বা অনুরূপ) যুক্ত করতে হবে, আমি কোটলিন তাই ব্যবহার করছি:

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

এটি আমার জন্য ইন্টেলিজির প্রকল্প আমদানি এবং উভয়ের পক্ষে কাজ করেছিল gradle idea। ধন্যবাদ! :)
ক্রিস কুপার

হ্যাঁ - সেরা টিপ উপলব্ধ। জর্জকে রাগান্বিত!
হুবাজুব

আমার জন্য কাজ করে। আমি এই সমাধানটি ম্যাপস্ট্রাক্ট, স্প্রিংফ্রেমওয়ার্ক এবং উপাদান মোডেল = "বসন্ত" দৃশ্যের সাথে ব্যবহার করেছি
dwilda

16

ঠিক করা

যান প্রজেক্টের গঠন - মডিউল - উত্স ফোল্ডার এবং এটি target/generated-sources/antlr4/com/mycompany- এ ক্লিক করুন বৈশিষ্ট্য সম্পাদনা করুন এবং সেট প্যাকেজ উপসর্গ থেকে com.mycompany

ঠিক এই কারণেই আমরা সোর্স ডায়ারে প্যাকেজ উপসর্গটি সেট করতে পারি ।


এখানে ভিন্ন তবে সম্পর্কিত সমস্যা


4
এই সংশোধনটি কেবলমাত্র আমার জন্য অনুসন্ধানের DAYS এ কাজ করেছে। ধন্যবাদ!
সিএনডিসন

ওহ ধন্যবাদ, আমি কেবল ইন্টেলিজ আপডেট করেছি এবং তারা তাদের আইকনগুলি পরিবর্তন করেছে। আমি ভাবিনি যে কমলা ফোল্ডারের অর্থ এটি উত্স নয়।
পিটার ডি বাই

অর্ধেক দিন আমি এটি সন্ধান করছি। Antlr4 দিয়ে আমার জন্য কাজ করেছেন। ধন্যবাদ!
পাইওটার টেম্পেসগুলি

4
এএনটিএলআর> = 4.5.3 এর জন্য (সম্ভবত এর আগেও খুব সম্ভবত), যতক্ষণ না আমার ব্যাকরণটি অবস্থিত ছিল src/main/antlr4/<path-to-package>/, তবে এটি উপস্থিত হবে target/generated-sources/antlr4/<path-to-package>। ইন্টেলিজ স্বয়ংক্রিয়ভাবে সঠিক ডিরেক্টরিটিকে উত্সের মূল হিসাবে চিহ্নিত করেছে এবং কোনও প্যাকেজ উপসর্গের প্রয়োজন ছিল না। আমি সন্দেহ করি যে লোকেরা সরাসরি তাদের ব্যাকরণ সরাসরি রাখলে এই ফিক্সটির প্রয়োজন হয় 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> টাস্ক ।

তবে যদি প্লাগইনটি ফোল্ডারটিকে উত্স ফোল্ডার হিসাবে যুক্ত করে, তবে আপনি স্ক্রু হয়ে গেছেন।


ধন্যবাদ শান আমি প্রকৃতপক্ষে লক্ষ্য করেছি যে ইন্টেলিজ লক্ষ্য / উত্পন্ন উত্স / কম পাশাপাশি লক্ষ্য / উত্পন্ন উত্স উভয়ই যুক্ত করে (এটি "উত্স" বিভাগে সুস্পষ্টভাবে উত্স ডিরেক্টরি হিসাবে যুক্ত করা হয়েছে)। প্রথম জিনিসটি ঘটে যাওয়া থেকে রোধ করার জন্য অন্য কোনও উপায় আছে কি? যদি না হয় তবে আমি আপনার কাজের চেষ্টা করব will
কান্নান একনাথ

4
হ্যাঁ, লেখকের ব্যবহার করা উচিত target/generated-sources/my-tool
ভ্লাস্টিমিল ওভেক


1

আমার প্রকল্পটি আমদানি করার সময় কয়েক মাস আগে আমি Eclipse নিয়ে একই সমস্যা ছিল। এখন আমি ইন্টেলিজেও একই ছিল। ইন্টেলিজজে কেউ আমাকে এটি সমাধান করতে কীভাবে সহায়তা করেছে তা এখানে:

মেনু => দেখুন => সরঞ্জাম উইন্ডোজ => মাভেন প্রকল্প বসন্তের ব্যবহারকারীর মান => কনফিগারেশন চালান, পরিষ্কার ইনস্টল নির্বাচন করুন। এটি একটি পরিষ্কার ইনস্টল করা উচিত এবং এর পরে আপনি ক্লাসগুলি দেখতে সক্ষম হবেন এখানে চিত্র বর্ণনা লিখুন


1

মডিউল সেটিংসে "বাদ দেওয়া" সরিয়ে এটি সমাধান করুন (প্রকল্পে ডান ক্লিক করুন, "মডিউল সেটিংস খুলুন")। এখানে চিত্র বর্ণনা লিখুন


0

একমাত্র কাজের শর্ত, বেশ কয়েকটি চেষ্টার পরে, মূল প্রকল্প ফোল্ডার থেকে লুকানো .আইডিএ ফোল্ডারটি সরিয়ে আবার ইন্টেলিজ থেকে পুনরায় আমদানি করা ছিল working


0

আমি দাশুন এর আগে করা মন্তব্যে আপডেট করতে চেয়েছিলাম , তবে এটি আমার প্রথমবারের মতো মন্তব্য করার কারণে, আবেদনটি আমাকে অনুমতি দেয়নি।

তবুও, আমি গ্রহনটি ব্যবহার করছি এবং দাশুনের পরামর্শ অনুসারে নীচে উল্লেখ কোড স্নিপেটটি আমার পম.এক্সএমএলতে যুক্ত করার পরে এবং আমি অ্যাভ্রো উত্স ফাইলগুলি তৈরি করার জন্য এমভিএন ক্লিন প্যাকেজটি চালিয়েছি, তবে আমি এখনও কর্মক্ষেত্রে সংকলন ত্রুটি পেয়েছি।

আমি প্রজেক্ট_নাম -> ম্যাভেন -> হালনাগাদ প্রকল্পটিতে ক্লিক করেছি এবং প্রকল্পটি আপডেট করেছি, যা লক্ষ্য / উত্পন্ন উত্সগুলিকে আমার গ্রহন প্রকল্পে উত্স ফোল্ডার হিসাবে যুক্ত করেছে।

<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

আমি এমভিএন জেনারেট-রিসোর্স চালিয়েছি এবং তারপরে / টার্গেট / জেনারেট-রিসোর্স ফোল্ডারটিকে "উত্স" হিসাবে চিহ্নিত করেছি (প্রকল্পের কাঠামো -> প্রকল্প সেটিংস -> মডিউলগুলি -> নির্বাচন / লক্ষ্য / উত্পন্ন-উত্স -> নীল "উত্স" আইকনে ক্লিক করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.