web-dev-qa-db-ja.com

Android Gradleベースのプロジェクトに-Xlint:uncheckedを追加する方法は?

ルート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

私は何を間違えていますか?

122
Ricardo Amaral

これは私のために働いたものです:(あなたのプロジェクトのbuild.gradleで)

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

免責事項:この回答には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"
}
49
koppor

これをbuild.gradleファイル(ルートディレクトリ)に配置します。

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

設定する別のコンパイル引数がありました。次は私のために働く。

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が最終的にこれらのメソッドにアクセスできなくなるためです(!)。自分で警告してください。

3
peter_pilgrim

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

オプションを1つだけ追加する場合(通常はさらに追加します)、タスクJavaCompile内に追加する必要があるのは次のとおりです。

options.compilerArgs << "-Xlint:unchecked"

Lint here および here

0
cesards