145

我尝试将以下内容添加到根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

我究竟做错了什么?

4

7 回答 7

248

这对我有用:(在您项目的 build.gradle 中)

allprojects {
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
        }
    }
}
于 2014-03-04T21:49:14.077 回答
60

免责声明:即使这个答案有 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"
}
于 2015-12-24T11:42:01.187 回答
11

对于gradle.kts使用以下内容的每个人来匹配简单build.gradle文件

构建.gradle.kts

afterEvaluate {
        tasks.withType(JavaCompile::class) {
            options.compilerArgs.add("-Xlint:unchecked")
            options.compilerArgs.add("-Xlint:deprecation")
        }
    }

构建.gradle

 gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
        }
    }
于 2019-12-31T09:54:12.377 回答
7

把它放在你的build.gradle文件(根目录)中:

allprojects { // Projects
   gradle.projectsEvaluated {
      tasks.withType(JavaCompile) {
         options.encoding = 'UTF-8'
         options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
      }
   }
}
于 2019-01-15T10:04:45.257 回答
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 及更高版本设置引导类路径。修复源代码,特别是后者,因为 Jigsaw Java 9,即将到来的 JRE 模块化实现,最终将使这些方法无法访问(!)。认为自己受到警告。

于 2015-01-07T10:24:03.760 回答
3

对于弃用,您现在可以在 gradle kotlin 脚本中使用它,这比修改更好,compilerArgs因为它是类型安全的:

tasks.withType<JavaCompile> {
    options.isDeprecation = true
}

在更高版本的 Gradle 中,我建议使用新的 API:

tasks.withType<JavaCompile>().configureEach {
    options.isDeprecation = true
}
于 2020-09-24T18:53:10.307 回答
0

我不确定问题是否与使用 Gradlesubprojects配置参数有关,但您使用的语法:

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 的更多信息。

于 2018-09-19T00:31:00.623 回答