Maven 3 build.plugins.plugin.version के बारे में चेतावनी


313

चूंकि मैंने Maven 3 को अपडेट किया है, इसलिए मुझे प्रत्येक बिल्ड पर निम्नलिखित चेतावनी संदेश मिलते हैं:

मैं इन चेतावनियों से कैसे छुटकारा पा सकता हूं?

[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for proj:id:jar:3.1
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-javadoc-plugin is missing. @ line 195, column 15
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 204, column 15
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-surefire-plugin is missing. @ line 227, column 15
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-jar-plugin is missing. @ line 215, column 15
[WARNING] 'reporting.plugins.plugin.version' for org.codehaus.mojo:jdepend-maven-plugin is missing. @ line 271, column 15
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.

1
मावेन 3.5.3 में, यह अब एक त्रुटि है। चेतावनियों की अवहेलना मत करो! प्लगइन संस्करण को खोजने के तरीके पर जवाब के लिए @gavenkoa का धन्यवाद।
jwm

जवाबों:


400

अपनी फ़ाइल में एक <version>तत्व जोड़ें । निम्नलिखित पाठ खोजें:<plugin> <artifactId>pom.xml

<plugin>
  <artifactId>maven-compiler-plugin</artifactId>

इसमें संस्करण टैग जोड़ें:

<plugin>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.3.2</version>

चेतावनी को हल किया जाना चाहिए।

इसके बारे में:

org.apache.maven.plugins के लिए 'build.plugins.plugin.version': maven-compiler-plugin गायब है

कई लोगों ने उल्लेख किया है कि समस्या क्यों हो रही है, लेकिन एक सुझाव देने में विफल। मुझे बस इतना करना चाहिए था कि अपने प्रोजेक्ट के लिए मेरी POM फाइल में जाऊं, और <version>जैसा कि ऊपर दिखाया गया है , टैग जोड़ें ।

संस्करण संख्या की खोज करने के लिए, एक तरीका मावेन के आउटपुट को देखने के बाद यह चल रहा है। जहाँ आप संस्करण संख्याएँ याद कर रहे हैं, मावेन अपना डिफ़ॉल्ट संस्करण प्रदर्शित करेगा:

[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ entities ---

उस संस्करण संख्या को ( 2.3.2ऊपर के रूप में ) लें और अपने POM में जोड़ें, जैसा कि दिखाया गया है।


4
@ जेबीटी को समझ नहीं आता कि क्यों? मावेन बिल्ड स्थिर होने के लिए होते हैं, इसलिए जो संस्करण का उपयोग करेगा उसे स्पष्ट रूप से परिभाषित किया जाना चाहिए। यही कारण है कि मावेन इसके लिए पूछ रहा है। जैसे संदेश कहता है, "इन समस्याओं को ठीक करने के लिए अत्यधिक अनुशंसा की जाती है क्योंकि वे आपके निर्माण की स्थिरता को खतरा देते हैं।"
eis

3
यह एक अजीब सा है, हालाँकि जब आप केवल प्रोजेक्ट POM फ़ाइल में प्लगइन के लिए एक प्रविष्टि जोड़ चुके हैं तो आपको यह समस्या आती है। प्रभावी POM में संस्करण तत्व है लेकिन फिर भी आपको इस चेतावनी को हटाने के लिए प्रोजेक्ट POM में एक संस्करण तत्व जोड़ना होगा।
ओनेपेली

2
मुझे मूल प्रश्न के समान चेतावनी मिल रही है, लेकिन मेरे pom.xml में maven-compiler-plugin का कोई संदर्भ नहीं है। मैं क्या खो रहा हूँ? धन्यवाद!
वीटोर ई। सिल्वा सूज़ा

3
मेरे लिए काम नहीं किया। प्लगइन संस्करण टैग पहले से ही था।
इरान मोराद

4
2.3.2 नवीनतम संस्करण है? आप कैसे बता सकते हैं कि कौन सा है? या यह कोई महत्त्व नहीं रखता?
पॉकेटकिड 2

84

जैसे भागो:

  $ mvn मदद: वर्णन -DartifactId = मावेन-युद्ध-प्लगइन -DgroupId = org.apache.maven.plugins

प्लग-इन के लिए कोई संस्करण नहीं है। आपको आउटपुट मिलता है:

नाम: मावेन वार प्लगिन
विवरण: प्रोजेक्ट से वेब एप्लिकेशन आर्काइव (WAR) फ़ाइल बनाता है
  आउटपुट और उसकी निर्भरताएँ।
समूह क्रमांक: org.apache.maven.plugins
विरूपण साक्ष्य आईडी: मावेन-युद्ध-प्लगइन
संस्करण: 2.2
लक्ष्य उपसर्ग: युद्ध

ऐसे संस्करण का उपयोग करें जो आउटपुट में दिखाया गया है।

अद्यतन यदि आप संस्करणों की सूची के बीच चयन करना चाहते हैं, तो http://search.maven.org/ या http://mvnrepository.com/ पर ध्यान दें कि आपके पसंदीदा जावा आईडीई में मावेन पैकेज खोज संवाद होना चाहिए । बस डॉक्स की जांच करें।

सुपर अद्यतन मैं भी उपयोग करें:

$ mvn dependency:tree
$ mvn dependency:list
$ mvn dependency:resolve
$ mvn dependency:resolve-plugins  # <-- THIS

हाल ही में मुझे पता चला कि प्लग-इन (या लाइब्रेरी) के लिए नवीनतम संस्करण कैसे प्राप्त करें ताकि अब मोगेन सेंट्रल पर जाने या जाने के लिए कोई ज़रूरत न हो :

$ mvn versions:display-dependency-updates
$ mvn versions:display-plugin-updates     # <-- THIS

6
+1। एक वैकल्पिक और अधिक कॉम्पैक्ट संस्करण:mvn help:describe -Dplugin=groupId:artifactId
informatik01

3
वास्तव में इसने कोई समाधान नहीं दिया, लेकिन यह मूल्यवान सामग्री है: वास्तव में कोई भी उपयोग किए गए संस्करण को कैसे पा सकता है / अपेक्षित है। : लायक कुछ हो सकता है कि यह हो गया होता pluginManagement टैग का प्रयोग एक माता पिता-पोम में इन प्लगइन-संस्करण रखने का उल्लेख stackoverflow.com/a/10483284/1023341
gkephorus

14

Maven 3 POM-Structure के साथ अधिक प्रतिबंधक है। आपको उदाहरण के लिए प्लगइन्स के संस्करण सेट करने होंगे।

3.1 मैवेन के साथ ये चेतावनी आपके निर्माण को तोड़ सकती है। Maven2 और maven3 के बीच अधिक परिवर्तन हैं: https://cwiki.apache.org/confluence/display/MAVEN/Maven+3.x+Compatibility+Notes


11

नवीनतम संस्करण की जानकारी प्राप्त करें:

https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin

नवीनतम संस्करण पर क्लिक करें (या जिसे आप उपयोग करना चाहते हैं) और आपको निर्भरता जानकारी दिखाई देगी (2019-05 के अनुसार यह 1.1.1 है:

<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->
<dependency>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.1</version>
</dependency>

आप संस्करण टैग और अपने प्लगइन टैग के लिए टिप्पणी का उपयोग करना चाह सकते हैं।

<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->
<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source />
        <target />
    </configuration>
</plugin>

यदि आप चाहें, तो आप अपने pom को किसी अन्य उत्तर में उल्लिखित गुणों के टैग में संस्करण जानकारी के लिए संशोधित कर सकते हैं।


10

मैं अपनी परियोजनाओं के लिए एक मूल पोम का उपयोग कर रहा हूं और संस्करणों को एक स्थान पर निर्दिष्ट करना चाहता हूं, इसलिए मैंने संस्करण निर्दिष्ट करने के लिए गुणों का उपयोग किया:

जनक पोम:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    ....
    <properties>
        <maven-compiler-plugin-version>2.3.2</maven-compiler-plugin-version>
    </properties>
    ....
</project>

परियोजना पोम:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    ....
    <build>
        <finalName>helloworld</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-compiler-plugin-version}</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

इसे भी देखें: https://www.allthingsdigital.nl/2011/04/10/maven-3-and-the-versions-dilemma/


1
मुझे लगता है कि प्लगइन्स के संस्करणों के लिए pluginManagement का उपयोग करना बेहतर या कम से कम अधिक प्राकृतिक हो सकता है।
जोनाथन रोजेन 21

सिवाय जब आपके पास बच्चे POM में एक ओवरराइडिंग प्लगइन है।
जोनाथन रोसेन

2

यह यहाँ में बहुत अच्छा जवाब है। और मैं 'Maven3 में एक तत्व क्यों जोड़ना चाहता हूं' जोड़ना चाहता हूं।
में Maven 3.x संगतता नोट्स


आंतरिक रूप से प्लगइन मेटाविज़न रिज़ॉल्यूशन , मावेन 2.x ने विशेष संस्करण मार्करों RELEASE और LATEST का उपयोग स्वचालित प्लगइन समाधान संकल्प का समर्थन करने के लिए किया। इन मेटावर्स को घोषणा के लिए तत्व में भी मान्यता दी गई थी। प्रतिलिपि प्रस्तुत करने योग्य बिल्ड की खातिर, Maven 3.x अब POM में इन मेटाविर्सन के उपयोग का समर्थन नहीं करता है। नतीजतन, उपयोगकर्ताओं को इन मेटावर्स की घटनाओं को एक ठोस संस्करण के साथ बदलना होगा।

और मुझे मावेन-कंपाइलर-प्लगइन - उपयोग में भी मिलते हैं

नोट: यदि आप एक प्लगइन के संस्करण को निर्दिष्ट नहीं करते हैं, तो मावेन 3.0 चेतावनी जारी करेगा।


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