2012-02-08 21 views
12

मैं कोशिश कर रहा हूँ:मैं कंपाइलर चेतावनियों के लिए असफल होने के लिए जावा मेवेन बिल्ड कैसे प्राप्त करूं?

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <compilerArgument>-Werror</compilerArgument> 
       <fork>true</fork> 
      </configuration> 
     </plugin> 

लेकिन कोई खुशी के साथ। this blog post पर सुझाए गए त्रुटियों पर मध्ययुगीन पाने के लिए अब कोई विचार है?

+0

नीचे वर्णित एक बग था जो अब कोई समस्या नहीं है। CompilerArgument के साथ निर्दिष्ट इस रूप में महान काम करता है। –

उत्तर

1

संपादित के अंत पर ध्यान दें रों: इस सवाल का जवाब हालांकि मैं इसे हटा नहीं सकते, क्योंकि यह समय में एक स्वीकृत जवाब था पुराना है।

मेवेन के साथ एक बग देखें: http://jira.codehaus.org/browse/MCOMPILER-120 इसे मैवेन-कंपाइलर-प्लगइन के 2.4 में तय किया गया है लेकिन मुझे विश्वास नहीं है कि अभी तक जारी किया गया है। टैग दुर्भाग्यवश काम नहीं करेगा।

+0

मेवेन-कंपाइलर-प्लगइन 2.4 पहले से ही मैवेन सेंट्रल – yegor256

+0

हाँ को जारी किया गया है, लेकिन जब मैंने जवाब दिया तो ऐसा नहीं था। –

+1

बस स्पष्ट होने के लिए, यह बग अब कोई समस्या नहीं है और प्रश्न में निर्दिष्ट फॉर्म बहुत अच्छा काम करता है। –

0

एक वैकल्पिक रूप है शायद इसे आज़माएं? <compilerArguments>

<configuration> 
    <compilerArguments> 
     <Werror /> 
    </compilerArguments> 
</configuration> 
0

मेवेन कंपाइलर प्लगइन के लिए open jira issue में this comment में वर्कअराउंड का उपयोग करके, निर्माण कंपाइलर चेतावनी के लिए विफल हो सकता है।

यह मेरे लिए काम करता है:, वर्ष 2015 के लिए

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
      <compilerId>javac</compilerId> 
      <source>1.6</source> 
      <target>1.6</target> 
      <compilerArgument>-Werror</compilerArgument> 
      <showDeprecation>true</showDeprecation> 
     </configuration> 

     <dependencies> 
      <dependency> 
       <groupId>org.codehaus.plexus</groupId> 
       <artifactId>plexus-compiler-api</artifactId> 
       <version>1.8.2</version> 
       <exclusions> 
        <exclusion> 
        <groupId>org.codehaus.plexus</groupId> 
        <artifactId>plexus-component-api</artifactId> 
        </exclusion> 
       </exclusions> 
      </dependency> 
      <dependency> 
       <groupId>org.codehaus.plexus</groupId> 
       <artifactId>plexus-compiler-manager</artifactId> 
       <version>1.8.2</version> 
       <exclusions> 
        <exclusion> 
        <groupId>org.codehaus.plexus</groupId> 
        <artifactId>plexus-component-api</artifactId> 
        </exclusion> 
       </exclusions> 
      </dependency> 
      <dependency> 
       <groupId>org.codehaus.plexus</groupId> 
       <artifactId>plexus-compiler-javac</artifactId> 
       <version>1.8.2</version> 
       <scope>runtime</scope> 
       <exclusions> 
        <exclusion> 
         <groupId>org.codehaus.plexus</groupId> 
         <artifactId>plexus-component-api</artifactId> 
        </exclusion> 
       </exclusions> 
      </dependency> 
     </dependencies> 
    </plugin> 
20

अद्यतन Maven 3.3 और जावा का उपयोग कर 8.

यहाँ एक न्यूनतम संकलक विन्यास कि सभी चेतावनियों सक्षम बनाता है और बनाता है निर्माण जब भी चेतावनी असफल पाए जाते हैं। नोट के

<plugins> 
    <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.3</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
      <showWarnings>true</showWarnings> 
      <compilerArgs> 
       <arg>-Xlint:all</arg> 
       <arg>-Werror</arg> 
      </compilerArgs> 
     </configuration> 
    </plugin> 
</plugins> 

बिट:

  • <showWarnings>true</showWarnings> की आवश्यकता है। अज्ञात कारणों से, Maven डिफ़ॉल्ट रूप से सक्रिय रूप से -nowarn ध्वज के साथ चेतावनी को दबा, तो -Xlint और -Werror झंडे नजरअंदाज कर दिया जाएगा।
  • showDeprecation क्योंकि -Xlint:all पहले से ही प्रतिवाद चेतावनी का उत्सर्जन करता है सक्षम करने की जरूरत नहीं है।
  • प्रयोग से पता चलता है कि fork सक्षम करने की जरूरत नहीं है, भले ही प्रलेखन अन्यथा कहते हैं।
+0

मैं बिल्ट-इन मेवेन प्लगइन्स के लिए 'groupId' को छोड़ना चाहता हूं ताकि अंतर्निहित के रूप में उनकी विशेष स्थिति पर बल दिया जा सके। अंतर्निहित मेवेन प्लगइन्स में सभी में डिफ़ॉल्ट समूह आईडी 'org.apache.maven.plugins' है, इसलिए इसे POM में निर्दिष्ट करना आवश्यक नहीं है। (इसे सत्यापित करने के लिए 'एमवीएन सहायता: प्रभावी-पोम' आज़माएं।) – glts

2

maven-compiler-plugin 3.6.0: failOnWarning ध्वज में नया। यह मेरे लिए काम किया:

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.6.0</version> 
    <executions> 
     <execution> 
     <id>compile</id> 
     <phase>process-sources</phase> 
     <goals> 
      <goal>compile</goal> 
     </goals> 
     <configuration> 
      <compilerArgument>-Xlint:-processing</compilerArgument> 
      <failOnWarning>true</failOnWarning> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

ध्यान दें कि मैं processing फाहा या अन्यथा ऑटो बात का एनोटेशन गुप्त "प्रतीक नहीं मिला" त्रुटियों के साथ निर्माण टूट जाएगा बाहर करने के लिए किया था।

+1

उपर्युक्त उत्तर काम करता है, हालांकि मैंने इसे 'एक्सलिंट' सेटिंग के बिना काम करने की कोशिश की और यह सफल नहीं हुआ। मुझे ' true' 'compilerArgs> -Werror' जैसा ही मिला है। अपने आप से '-विरर' कुछ भी नहीं करता है क्योंकि इसे 'एक्सलिंट: सब' के साथ जोड़ा जाना चाहिए। तो अपने आप से < true 'कुछ भी नहीं करता है। –