মেভেনের সংকলন করতে এবং বিল্ড জারে অন্তর্ভুক্ত করার জন্য কীভাবে একটি অতিরিক্ত উত্স ডিরেক্টরি যুক্ত করবেন?


96

এসআরসি / মেইন / জাভা ছাড়াও, আমি একটি সিআরসি / বুটস্ট্র্যাপ ডিরেক্টরি যুক্ত করছি যা আমি আমার বিল্ড প্রক্রিয়াতে অন্তর্ভুক্ত করতে চাই, অন্য কথায়, আমি মাভেনকে আমার বিল্ডে উত্সগুলি সংকলন করতে এবং অন্তর্ভুক্ত করতে চাই। কেমন !?


সরল প্রশ্ন: সোর্স কোডটি এসআরসি / মেইন / জাভাতে কেন সরানো হচ্ছে না? অথবা একটি পৃথক মাভেন প্রকল্প / মডিউল তৈরি করুন যা কোডটি ধারণ করে এবং এটি নির্ভরতা হিসাবে সংজ্ঞায়িত করে।
খামারবায়েস

7
আমার ক্ষেত্রে আমার একটি উত্পন্ন উত্স ফোল্ডার যুক্ত করা দরকার যা আমি লক্ষ্যমাত্রার ভিতরে থাকতে পছন্দ করি।
djjeck

বিকল্পভাবে, কেউ এখানে বলা ছাড়া অন্য ডিরেক্টরিতে ইন্টিগ্রেশন-পরীক্ষা রাখতে চাইতে পারেsrc/{main,test}/
y2k-shubham

এই এখানে আলোচনা করা হয়েছে stackoverflow.com/q/270445/1061929
bjmi

উত্তর:


145

আপনি বিল্ড হেল্পার প্লাগইন ব্যবহার করতে পারেন , যেমন:

<project>
  ...
  <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>some directory</source>
                ...
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

4
গ্রহন কি এমন ফোল্ডারটি সত্যিই buildpathকারও কাছে অন্যতম হিসাবে স্বীকৃতি দেয় ? 'এটা আমার পক্ষে হয় না। FWIW, আমি m2eপ্রকল্পটি আমদানি করতে ব্যবহার করি ।
মাইস্টেরাকস

দুর্দান্ত উত্তর, কেবল পরিষ্কার করার জন্য, আপনার উপরের লাইনগুলি দিয়ে আপনার মেভেন-কম্পাইলার-প্লাগইনটি প্রতিস্থাপন করা উচিত ...
কলিন

পাশাপাশি ইন্টেলিজজে কাজ করে।
আলেকজান্ডার ক্লিমেটসেক

4
গ্রহন আমাকে বিল্ড হেল্পার সংযোগকারী, এম 2e এর জন্য একটি প্লাগইন ইনস্টল করতে বলেছিল। আমি এটি করেছি, এবং জীবনকালীন ত্রুটি চলে গেছে।
অ্যালেক্সিস ডুফরনয়

4
Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.7:add-source (execution: add-source, phase: generate-sources)এই ত্রুটি পেয়ে
কেটি

36
দ্রষ্টব্য: এই সমাধানটি জাভা উত্স ফাইলগুলিকে লক্ষ্য / শ্রেণি ডিরেক্টরিতে সরিয়ে দেবে এবং উত্সগুলি সংকলন করবে না।

pom.xmlহিসাবে আপডেট করুন -

<project>   
 ....
    <build>
      <resources>
        <resource>
          <directory>src/main/config</directory>
        </resource>
      </resources>
     ...
    </build>
...
</project>

4
নেটবিয়েন্স এটিকে কবজির মতো বাছাই করেছে :)
আটটিলা

4
দেখে মনে হচ্ছে আপনাকে
গ্রাহ্য

@ ডর্মহাউস আপনি কি ব্যাখ্যা করতে পারেন?
সৈকত 11

4
ইন্টেলিজের সাথে কাজ করে না, এটি <resource>"উত্স" ফোল্ডার হিসাবে দেখবে তবে "উত্স" ফোল্ডার হিসাবে নয়, যেমন এটি জাভা উত্স ফাইলগুলি তাদের অভ্যন্তরে সংকলন করবে না won't
আলেকজান্ডার ক্লিমেটসেক

4
এই সমাধানটি জাভা উত্স ফাইলগুলিকে কেবল লক্ষ্য / শ্রেণি ডিরেক্টরিতে স্থানান্তরিত করবে এবং উত্সগুলি সংকলন করবে না
স্টিফান হাবরল

12

7
এটি ডিফল্ট src / main / java ডিরেক্টরিকে ওভাররাইড করে। আপনি যদি একাধিক ডিরেক্টরি চান তবে আপনাকে ডিফল্টও নির্দিষ্ট করতে হবে।
ন্যাটিক্স

4
প্রশ্নটি কীভাবে একাধিক উত্স ডিরেক্টরি যুক্ত করতে হয় এবং আপনি কেবল একটি উত্স ডিরেক্টরি যুক্ত করার জন্য কোনও পদ্ধতির প্রস্তাব দিচ্ছেন, যা জিজ্ঞাসা করা হয় তার বিপরীত।
জোও মাতোস

1

মাভেন সংস্করণ (3) এবং ম্যাভেন সংকলক প্লাগইন (3.7.0) এর সাম্প্রতিক সংস্করণ সহ, আমি লক্ষ্য করেছি যে build-helper-maven-pluginবিল্ডে যুক্ত করার জন্য উত্স কোড যুক্ত ফোল্ডারে অবস্থিত থাকলে ফোল্ডারের সাথে উত্স ফোল্ডার যুক্ত করার প্রয়োজন নেই targetফোল্ডার বা এটির একটি সাবফোল্ডার।
দেখে মনে হয় যে সংকলক মেভেন প্লাগইনটি এই ফোল্ডারের ভিতরে অবস্থিত যে কোনও জাভা উত্স কোডকে সংকলন করে যা তাদের ডিরেক্টরিতে থাকে।
উদাহরণস্বরূপ কিছু (উত্পন্ন বা না) উত্স কোড থাকা target/a, target/generated-source/fooসংকলন এবং আউটপুট ডিরেক্টরিতে যুক্ত করা হবে:: target/classes


-1

আপনি আপনার বিল্ড প্রক্রিয়াটির জন্য ডিরেক্টরিগুলি যুক্ত করতে পারেন যেমন:

    ...
   <resources>
     <resource>
       <directory>src/bootstrap</directory>
     </resource>
   </resources>
   ...

Src / main / java হল ডিফল্ট পাথ যা pom.xML এ উল্লেখ করার দরকার নেই


4
লোকেরা কেন জনগণকে নিচে নামবে? মূলত saiky0 এর একই উত্তর (যা upvotes আছে) তবে আগে?
ফ্রিসো

15
@ ফ্রিসো কারণ এটি সঠিক নয়। রিসোর্স ডিরেক্টরি যুক্ত করা সংস্থান যুক্ত করবে (ফাইলগুলিতে অনুলিপি করা হয়েছে target/classesতবে সংকলন করা হয়নি)। এই প্রশ্নের একটি উৎস ডিরেক্টরি, যা ফাইল করা হবে ঝুলিতে যোগ হয় কম্পাইল মধ্যে target/classes, না অনুলিপি করা হয়েছে।
ডারথ অ্যান্ড্রয়েড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.