कैसे जोड़ें -Xlint: मेरे एंड्रॉइड ग्रेडल आधारित प्रोजेक्ट के लिए अनियंत्रित?


138

मैंने मूल build.gradleफ़ाइल में निम्नलिखित जोड़ने की कोशिश की :

subprojects {
    gradle.projectsEvaluated {
        tasks.withType(Compile) {
            options.compilerArgs << "-Xlint:unchecked -Xlint:deprecation"
        }
    }
}

लेकिन मुझे यह मिल रहा है:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':Libraries:ActionBarSherlock:compileRelease'.
> invalid flag: -Xlint:unchecked -Xlint:deprecation

मैं क्या गलत कर रहा हूं?


क्या सब कुछ ठीक है केवल एक पैरामीटर जैसे Options.compilerArgs << "-Xlint: deprecation" ??
शाकालाक

1
हाँ यह काम करता है। मैं बदल गया हूं "-Xlint:unchecked" << "-Xlint:deprecation"और इसने दोनों के लिए काम किया है :) यदि आप इसके साथ उत्तर बनाना चाहते हैं, तो मैं इसे सहर्ष स्वीकार कर लूंगा।
rfgamaral

@RicardoAmaral शायद आपको बस औपचारिक रूप से इसका जवाब देना चाहिए और इस शकलका की टिप्पणी का संदर्भ देना चाहिए।
डांड्रे एलीसन

जवाबों:


232

यह वही है जो मेरे लिए काम करता है: (आपके प्रोजेक्ट के बिल्ड.ग्रेड में)

allprojects {
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
        }
    }
}

1
निर्भरता को छोड़कर, आप इसे केवल मुख्य मॉड्यूल के लिए कैसे करेंगे?
अलेब

4
@aleb, मेरा मानना ​​है कि आप केवल वर्तमान build.gradle पर सेटिंग लागू करें और सभी build.gradle's (यानी allprojects) पर लागू न हों। उस स्थिति में, इसे allprojectsबंद न करें।
द क्रिसट्रैट

क्या इससे लिंट रन पर कोई फर्क पड़ता है? किसी कारण से, मेरा लिंट -Xlint:uncheckedसेटिंग की परवाह किए बिना सटीक एक ही चेतावनी संदेश प्रदर्शित कर रहा है।
इगोरगानापोलस्की

मुझे लगता है कि इसे "build.gradle" के बजाय "build-extras.gradle" से जोड़ना बेहतर है।
मैक्सिम

2
धन्यवाद, इसने मेरे लिए काम किया हालांकि मुझे यकीन नहीं है कि यह उत्तर कहां से आया। यह मेरे लिए हास्यास्पद है कि डिफ़ॉल्ट रूप से लिंटर समस्या के बारे में कोई जानकारी नहीं देगा जब तक कि आप इन विकल्पों को नहीं जोड़ते।
JHS

55

डिस्क्लेमर: भले ही इस उत्तर में 10 से अधिक अपवोट्स हों, लेकिन यह एंड्रॉइड प्रोजेक्ट के संदर्भ में समस्या का समाधान नहीं करता है । हालाँकि, Google इस प्रश्न को गैर-एंड्रॉइड प्रोजेक्ट के संदर्भ में पाता है। इस प्रकार, मैं उन लोगों के लिए यह जवाब रखता हूं।

JavaCompile के अनुसार , निम्नलिखित समाधान प्रतीत होता है:

compileJava {
    options.encoding = 'UTF-8'
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}

यदि आप चाहते हैं कि यह परीक्षण के मामलों के लिए हो, तो उपयोग करें compileTestJava

compileTestJava {
    options.encoding = 'UTF-8'
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}

1
क्या यह शीर्ष-स्तर बिल्ड.ग्रेड या मॉड्यूल में जाता है?
इगोरगानापोलस्की

5
मॉड्यूल के build.gradle फ़ाइल में।
डॉ। साइमन हैरर

3
क्या आप उस पहले स्निपेट के संदर्भ का विस्तार कर सकते हैं? इसमें कहाँ जाता है gradle.build?
नॉटआउट २१

यह समाधान उन मॉड्यूल के लिए काम करता है जो javaअपनी build.gradleफ़ाइल में प्लगइन को लागू कर रहे हैं, लेकिन उन मॉड्यूल के लिए नहीं जो com.android.applicationया com.android.libraryप्लगइन को लागू कर रहे हैं ।
आदिल हुसैन

2
@koppor: पिछली टिप्पणी देखें। Android डेवलपर्स के लिए काम नहीं करता है। जो "थ्रेड ... एंड्रॉइड ग्रेडल बेस्ड प्रोजेक्ट" शीर्षक के लिए एक समस्या है।
रॉबिन डेविस

7

इसे अपनी build.gradle फ़ाइल (रूट निर्देशिका) में रखें:

allprojects { // Projects
   gradle.projectsEvaluated {
      tasks.withType(JavaCompile) {
         options.encoding = 'UTF-8'
         options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
      }
   }
}

4

gradle.ktsसरल build.gradleफ़ाइल के साथ मिलान करने के लिए निम्न का उपयोग करने वाले सभी के लिए

build.gradle.kts

afterEvaluate {
        tasks.withType(JavaCompile::class) {
            options.compilerArgs.add("-Xlint:unchecked")
            options.compilerArgs.add("-Xlint:deprecation")
        }
    }

build.gradle

 gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
        }
    }

3

मेरे पास सेट करने के लिए एक अलग संकलन था। निम्नलिखित मेरे लिए काम करता है।

gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        options.compilerArgs << "-XDignore.symbol.file"
        options.bootClasspath = "$System.env.JAVA_HOME/jre/lib/rt.jar"
    }
}

आपको JDK 1.8 और इसके बाद के संस्करण के लिए बूट क्लासपथ को Unsafe और sun.sw. * कक्षाओं जैसी चीजों के लिए सेट करना होगा। विशेष रूप से उत्तरार्द्ध के लिए स्रोत कोड को ठीक करें, क्योंकि आरा जावा 9, जेआरई के लिए अप और आने वाले मॉड्यूलरिटी कार्यान्वयन, अंततः इन तरीकों को दुर्गम (!) बना देगा। अपने आप को चेतावनी दी पर विचार करें।


0

मुझे यकीन नहीं है कि समस्या ग्रैगल subprojectsकॉन्फ़िगरेशन पैरामीटर का उपयोग करने के बारे में थी , लेकिन आपने जो सिंटैक्स का उपयोग किया था:

options.compilerArgs << "-Xlint:unchecked -Xlint:deprecation"

यह मेरे लिए काम किया:

subprojects {
  gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
      options.compilerArgs += [
        '-Xlint:unchecked', // Shows information about unchecked or unsafe operations.
        '-Xlint:deprecation', // Shows information about deprecated members.
      ]
    }
  }
}

या

subprojects {
  gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
      options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
    }
  }
}

यदि आप केवल एक विकल्प जोड़ना चाहते हैं (आप सामान्य रूप से अधिक जोड़ेंगे), उस कार्य के अंदर जिसे JavaCompileआपको बस जोड़ना है:

options.compilerArgs << "-Xlint:unchecked"

आप Lint के बारे में और जानकारी यहाँ और यहाँ प्राप्त कर सकते हैं ।

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