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

루트 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

내가 뭘 잘못하고 있죠?



답변

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

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

답변

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

답변

이것을 build.gradle 파일 (루트 디렉토리) 에 넣으십시오 .

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

답변

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

답변

다른 컴파일 인수를 설정했습니다. 다음은 나를 위해 작동합니다.

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가 결국 이러한 메소드에 액세스 할 수 없게되므로 소스 코드를 특히 후자를 수정하십시오 (!). 자신에게 경고를 고려하십시오.


답변

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"

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