从启用 Checker Framework 的构建创建 Jar?

Create Jar from Checker Framework enabled build?

我正在将 Checker Framework 添加到现有的 Java Gradle 构建中。我集成了 Checker 并提出了问题,一切都很好。但现在我已经添加了它,我的构建不再像以前那样生成 .jar 文件。

以前,我会在 build/libs/myproject.jar 获得一个 .jar。现在我看到 build/checkerframeworkbuild/main 但没有 build/libs 也没有 .jar.

我的build.gradle在下面。以前有人尝试过吗?成功了吗?

我想我也会接受一个答案,该答案显示 运行 如何在构建之外进行检查,例如gradle check 到 运行 使用 Checker 构建,gradle build 生成 .jar。但如果可能的话,我真的更喜欢只有一个构建步骤。

谢谢!

plugins {
    id "org.checkerframework" version "0.5.18"
    id 'application'
}

apply plugin: 'org.checkerframework'

checkerFramework {
    checkers = [
        'org.checkerframework.checker.nullness.NullnessChecker',
        'org.checkerframework.checker.units.UnitsChecker'
    ]
}

repositories {
    jcenter()
}

java {
    sourceCompatibility = JavaVersion.VERSION_11
    targetCompatibility = JavaVersion.VERSION_11
}

jar {
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE

    // Embed all dependencies to create a "fat jar" as required for AWS deployment.
    // Exclude 3rd-party signing files to prevent security errors at runtime
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    } {
        exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'
    }

    manifest {
        attributes('Main-Class': 'client.CliMain')
    }
}

如果构建通过,那么添加 -processor 应该不会影响是否生成 .jar 文件。 (除非你通过 -proc:only 之类的。)

如果构建失败,则 Gradle 将不会构建 jar 文件。 您说 Checker Framework 正在“引发问题”,所以构建可能失败了。