প্যারেন্ট POM এ সংজ্ঞায়িত ম্যাভেন প্লাগইনটি অক্ষম করুন


158

আমি একটি প্যারেন্ট পম ব্যবহার করছি যা একটি প্লাগইন সংজ্ঞায়িত করে যা আমি চাইল্ড পিওমে চালাতে চাই না। চাইল্ড পমের প্লাগইন আমি কীভাবে পুরোপুরি অক্ষম করতে পারি?

সীমাবদ্ধতা: আমি প্যারেন্ট POM নিজেই পরিবর্তন করতে পারি না।

উত্তর:


205

একটি শিশু পিওএম-এ ফাইন্ডব্যাগগুলি অক্ষম করার সময় নিম্নলিখিতটি আমার জন্য কাজ করে:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>findbugs-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>ID_AS_IN_PARENT</id> <!-- id is necessary sometimes -->
            <phase>none</phase>
        </execution>
    </executions>
</plugin>

দ্রষ্টব্য: ফাইন্ডব্যাগস প্লাগইনটির সম্পূর্ণ সংজ্ঞাটি আমাদের প্যারেন্ট / সুপার পিওমে রয়েছে, সুতরাং এটি সংস্করণটি এবং এর পরেও উত্তরাধিকার সূত্রে প্রাপ্ত হবে।

ম্যাভেন 3 এ আপনাকে ব্যবহার করতে হবে:

 <configuration>
      <skip>true</skip>
 </configuration>

প্লাগইন জন্য।


8
এটি "সঠিক" অর্থাত্‍ এটি কার্যকরভাবে কাজ করে তবে এটি লক্ষ করা উচিত যে এটি একটি অনির্ধারিত (বা কমপক্ষে অননুমোদিত ) বৈশিষ্ট্য। 'কিছুই নয়' নামে কোনও সরকারী পর্যায় নেই। সুতরাং, আপনি সেখানে 'ফু' রাখতে পারেন।
মার্সেল স্টার

1
ম্যাভেন 3-এ আমার জন্য এটি কাজ করে না। <স্কিপ> সত্য </ translation> বারমুলিদের মতো কাজের প্রস্তাব দেওয়া হয়েছে
মিবুটেক

10
আমাকে <id>…</id>প্যারেন্ট পুমের অংশ যোগ করতে হয়েছিল , তবে এটি আমার পক্ষে কাজ করেছিল worked
মীরাবিলোস

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

10
মিরাবিলোসের মন্তব্যটি ম্যাভেন 3 এর সঠিক সমাধান এবং এটি সমস্ত প্লাগইন জুড়ে বহনযোগ্য। সমস্ত প্লাগইনগুলির একটি <skip>প্যারামিটার নেই।
গিলি

60

দেখুন প্লাগইনটির কোনও 'স্কিপ' কনফিগারেশন প্যারামিটার রয়েছে কিনা। প্রায় সব। যদি এটি হয় তবে এটি কেবল শিশুর একটি ঘোষণায় যুক্ত করুন:

<plugin>
   <groupId>group</groupId>
   <artifactId>artifact</artifactId>
   <configuration>
     <skip>true</skip>
   </configuration>
</plugin>

যদি তা না হয় তবে ব্যবহার করুন:

<plugin>    
<groupId>group</groupId>   
 <artifactId>artifact</artifactId>    
<executions>
     <execution>
       <id>TheNameOfTheRelevantExecution</id>
       <phase>none</phase>
     </execution>    
</executions>  
</plugin>

আপনি যে প্লাগইনটির সাথে কাজ করছেন তার নামকরণ এবং সহায়তার জন্য কীভাবে: কার্যকর পম আপনার বাস্তবায়নের সঠিক রয়েছে কিনা তা দেখার জন্য।
bmargulies

1
প্লাগইন বনাম প্লাগইন ম্যানেজমেন্ট সন্ধান করুন। পরে প্রাক্তনকে ওভাররাইড করে।
bmargulies

আমি কোবার্টুরা প্লাগইনটি ব্যবহার করছি এবং আমি চাইল্ড পমে এটি চালাতে চাই না।
tobiasbayer

চেক গোলটি 2.5 এ চলে গেছে। এটা আগে হয়নি। কোবার্টুরার গোল হয় না।
bmargulies

আমি কেবল চেকটি বাদ দিতে চাই না তবে পুরো প্লাগইন কার্যকর করা যায়।
tobiasbayer

37

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

<execution>
    <id>TheNameOfTheRelevantExecution</id>
    <phase/>
</execution>

আমি 2 পয়েন্টগুলি হাইলাইট করতে চাই:

  1. পর্যায়টি কিছুই নির্ধারণ করা হয়, যা 'হ'ন' এর চেয়ে কম হ্যাকি দেখায়, যদিও এখনও একটি হ্যাক।
  2. আইডি অবশ্যই কার্যকর করতে হবে যা আপনি ওভাররাইড করতে চান as আপনি যদি মৃত্যুদন্ড কার্যকর করার জন্য আইডি নির্দিষ্ট না করে থাকেন তবে মাভেন এটি সুস্পষ্টভাবে করবেন (এমন একটি উপায় যা আপনার দ্বারা স্বজ্ঞাতভাবে প্রত্যাশিত নয়)।

পোস্ট করার পরে এটি ইতিমধ্যে স্ট্যাকওভারফ্লোতে রয়েছে: একটি ম্যাভেন মাল্টি-মডিউল প্রকল্পে, আমি কীভাবে একটি সন্তানের প্লাগইন অক্ষম করতে পারি?


1
রেকর্ডের জন্য: ডিফল্ট সম্পাদন ID- র সহজ বিধি জারি করে যে এই উত্তর পরিপূর্ণ হয় অনুসরণ করুন: stackoverflow.com/a/34599117/7641
জেনস Bannmann

2
এটি লক্ষণীয় যে এই সমাধানটি প্লাগইন-নির্দিষ্ট "স্কিপ" বিকল্পের উপর নির্ভর করার পরিবর্তে প্লাগইনটি (প্রদত্ত এক্সিকিউশন আইডির জন্য) যেমন অক্ষম করে (যেমন ওপি বলেছিল) অক্ষম করে
জিরো 3

3

আমি জানি এই থ্রেডটি আসলেই পুরানো তবে @ ইভান বান্দারেঙ্কো থেকে সমাধান আমার পরিস্থিতিতে আমাকে সহায়তা করেছে।

আমার মধ্যে নিম্নলিখিত ছিল pom.xml

<build>
    ...
    <plugins>
         <plugin>
                <groupId>com.consol.citrus</groupId>
                <artifactId>citrus-remote-maven-plugin</artifactId>
                <version>${citrus.version}</version>
                <executions>
                    <execution>
                        <id>generate-citrus-war</id>
                        <goals>
                            <goal>test-war</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
    </plugins>
</build>

আমি যা চেয়েছিলাম তা হ'ল generate-citrus-warএকটি নির্দিষ্ট প্রোফাইলের কার্যকর করা অক্ষম করা এবং এটিই ছিল সমাধান:

<profile>
    <id>it</id>
    <build>
        <plugins>
            <plugin>
                <groupId>com.consol.citrus</groupId>
                <artifactId>citrus-remote-maven-plugin</artifactId>
                <version>${citrus.version}</version>
                <executions>
                    <!-- disable generating the war for this profile -->
                    <execution>
                        <id>generate-citrus-war</id>
                        <phase/>
                    </execution>

                    <!-- do something else -->
                    <execution>
                        ...
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</profile>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.