Подтвердить что ты не робот

Как добавить -Xlint: не установлен в мой Android-проект Gradle?

Я попытался добавить в корневой файл 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

Что я делаю неправильно?

4b9b3361

Ответ 1

Вот что сработало для меня: (в вашем проекте build.gradle)

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

Ответ 2

  Отказ от ответственности: Хотя в этом ответе содержится более 10 голосов, он не решает проблему в контексте проекта Android. Тем не менее, Google находит этот вопрос в контексте не Android-проектов. Таким образом, я держу этот ответ для тех людей.

Согласно JavaCompile, решение выглядит следующим образом:

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

Если вы хотите, чтобы это было для тестовых случаев, используйте compileTestJava

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

Ответ 3

Поместите это в свой файл build.gradle (корневой каталог):

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

Ответ 4

У меня был другой аргумент компиляции для установки. Для меня работает следующее.

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.swing. * classes. Исправьте исходный код, особенно для последнего, потому что Jigsaw Java 9, реализация модульной реализации JRE и, наконец, сделает эти методы недоступными (!). Считайте себя предупрежденным.

Ответ 5

Я не уверен, что проблема заключалась в использовании параметра конфигурации subprojects Gradle, но вы использовали синтаксис:

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 здесь и здесь.