내 Android Gradle 기반 프로젝트에 -Xlint : unchecked를 추가하는 방법은 무엇입니까?


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"과 같은 하나의 매개 변수만으로도 모든 것이 정상입니까?
shakalaca

1
예, 작동합니다. 나는로 바뀌었고 "-Xlint:unchecked" << "-Xlint:deprecation"두 가지 모두에 효과가있었습니다.
rfgamaral

@RicardoAmaral 어쩌면 공식적으로 스스로 대답 하고이 shakalaca의 의견을 참조해야합니다.
Dandre Allison

답변:


232

이것이 나를 위해 일한 것입니다 : (프로젝트의 build.gradle에서)

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

1
종속성을 제외하고 메인 모듈에 대해서만 어떻게 하시겠습니까?
aleb

4
@aleb, 나는 당신이 모든 build.gradle (즉 모든 프로젝트)이 아니라 현재 build.gradle에만 설정을 적용한다는 것을 의미한다고 가정합니다. 이 경우에는 닫지 마십시오 allprojects.
TheChrisPratt

이것이 Lint 실행에 영향을 미치도록되어 있습니까? 어떤 이유로 든, Lint는 -Xlint:unchecked설정에 관계없이 똑같은 경고 메시지를 표시 합니다.
IgorGanapolsky 2016 년

"build.gradle"대신 "build-extras.gradle"에 추가하는 것이 좋습니다.
Maxim

2
이 답변의 출처가 확실하지 않지만 감사합니다. 기본적으로 린 터는 이러한 옵션을 추가 할 때까지 문제에 대한 정보없이 오류를 발생시킵니다.
JHS

55

면책 조항 : 이 답변에 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"
}

1
이것이 최상위 build.gradle 또는 모듈에 있습니까?
IgorGanapolsky 2016 년

5
모듈의 build.gradle 파일에서.
Dr. Simon Harrer

3
첫 번째 스 니펫의 컨텍스트를 확장 할 수 있습니까? 어디로 gradle.build갑니까?
not2qubit

이 솔루션은 파일에 java플러그인을 적용하는 모듈에는 작동 build.gradle하지만 com.android.application또는 com.android.library플러그인을 적용하는 모듈에는 작동하지 않습니다 .
Adil Hussain

2
@koppor : 이전 의견을 참조하십시오. 안드로이드 개발자에게는 작동하지 않습니다. "... Android gradle based project"라는 스레드의 문제입니다.
로빈 데이비스

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"
    }
}

Unsafe 및 sun.swing. * 클래스와 같은 항목의 경우 JDK 1.8 이상의 부트 클래스 경로를 설정해야합니다. JRE를위한 최신 모듈 식 구현 인 Jigsaw Java 9가 결국 이러한 메소드에 액세스 할 수 없게되므로 소스 코드를 특히 후자를 수정하십시오 (!). 자신에게 경고를 고려하십시오.


0

Gradle 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"

린트에 대한 자세한 내용은 여기여기를 참조하십시오. .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.