如何抑制deprecations为KotlinCompile在Gradle类似JavaCompile?
JavaCompile(有效):
tasks.withType(JavaCompile) {
configure(options) {
compilerArgs << '-Xlint:-deprecation'
}
}
Run Code Online (Sandbox Code Playgroud)
KotlinCompile(无效):
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) {
kotlinOptions {
freeCompilerArgs = ["-Xjavac-arguments=-Xlint:-deprecation"]
}
}
Run Code Online (Sandbox Code Playgroud)
参考文献:
类似问题:
我正在使用Java 7(尽管使用1.6编译)来编译类和javadoc.我已经消除了所有出现的javadoc警告,但是如果有任何javadoc警告,那么想法是让构建失败.
使用Java 8,这是默认行为.但是,在警告方面它也更加严格(如果方法没有列出所有@params或@returns,我们不希望发出警告).另外,我不认为公司很快会转向8,所以这是一个没有实际意义的问题.
我希望有一些简单的标志设置为gradle失败,如果有警告(只有failonError).我在想的是刮掉javadoc进程的控制台输出.如果该输出包含警告,那么我知道有警告,并且构建应该失败.
这是我的build.gradle中的javadoc块:
task gendocs(type: Javadoc) {
options.stylesheetFile = new File("./assets/doc_style.css")
options.windowTitle = "OurTitle"
options.memberLevel = JavadocMemberLevel.PROTECTED
options.author = true
options.linksOffline('http://d.android.com/reference', System.getenv("ANDROID_HOME") + '/docs/reference')
String v = "${SEMVER}"
version = v.replace("_", '.')
destinationDir = new File("${BUNDLE_FOLDER}/docs/api")
source = sourceSets.main.allJava
classpath += configurations.compile
}
Run Code Online (Sandbox Code Playgroud)
所以,如果没有更简单的方法来做到这一点,我如何检查javadoc的控制台输出来刮掉它?
我只是在我的程序中有一个错误,但我根本不明白该程序是如何编译的!
我有以下变量:
gamesPerCountriesMap: MutableMap<Long, MutableMap<Long, MutableList<AllScoresGameObj>>>?
Run Code Online (Sandbox Code Playgroud)
我有以下代码行:
var gamesList = gamesPerCountriesMap?.get(countryItem.id)?.get(competitionItem)
Run Code Online (Sandbox Code Playgroud)
正确的行应该是:
var gamesList = gamesPerCountriesMap?.get(countryItem.id)?.get(competitionItem.id)
Run Code Online (Sandbox Code Playgroud)
我查看了 Map 类的原型,该方法声明如下:
公共内联运算符 fun <@kotlin.internal.OnlyInputTypes K, V> Map<out K, V>.get(key: K): V?
正如我们所看到的,它可以获取 K 并且它是子类型,但是作为 CompetitionObj 类的 instacne 的竞争项并没有继承Long类。那么为什么编译器没有阻止这个错误呢?我解决了这个问题,但我很清楚什么没有阻止代码被编译?