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


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つのパラメーターのみで問題はありませんか?
シャカラカ2013

1
はい、動作します。に変更しましたが"-Xlint:unchecked" << "-Xlint:deprecation"、両方で機能しました:)これで回答を作成したい場合は、喜んで承認済みとマークします。
rfgamaral 2013

@RicardoAmaral多分あなたは自分で正式に答えて、このシャカラカのコメントを参照するべきです。
Dandre Allison 2013

回答:


232

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

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

1
依存関係を除いて、メインモジュールのみに対してどのように実行しますか?
aleb 2014

4
@aleb、私はあなたが現在のbuild.gradleにのみ設定を適用し、すべてのbuild.gradle(つまり、すべてのプロジェクト)には適用しないことを意味すると思います。その場合は、allprojectsクロージャーでラップしないでください。
TheChrisPratt 2014

これはリントの実行に影響を与えるはずですか?何らかの理由で、私のLintは-Xlint:unchecked設定に関係なくまったく同じ警告メッセージを表示しています。
IgorGanapolsky

「build.gradle」ではなく「build-extras.gradle」に追加した方がいいと思います。
Maxim

2
おかげで、この答えはどこから来たのかわかりませんが、これでうまくいきました。デフォルトでは、これらのオプションを追加するまで、リンターが問題に関する情報なしでエラーを発生させるのは、私にはばかげているようです。
JHS、2018

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

5
モジュールのbuild.gradleファイル内。
Simon Harrer博士2016年

3
最初のスニペットのコンテキストを拡張できますか?それはどこにgradle.build行きますか?
not2qubit 2016

このソリューションjavaは、build.gradleファイルにプラグインを適用しているモジュールでは機能しますが、com.android.applicationまたはcom.android.libraryプラグインを適用しているモジュールでは機能しません。
アディルフセイン2017

2
@koppor:以前のコメントを参照してください。Android開発者には機能しません。これは、「... 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"
    }
  }
}

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

options.compilerArgs << "-Xlint:unchecked"

Lintの詳細については、ここここを参照してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.