// Plugins apply plugin: "java" apply plugin: "jacoco" java { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } wpilibTools.deps.wpilibVersion = wpilibVersion // Tell gradlerio what version of things to use (that we care about) // See: https://github.com/wpilibsuite/GradleRIO/blob/main/src/main/java/edu/wpi/first/gradlerio/wpi/WPIVersionsExtension.java wpi.getVersions().getOpencvVersion().convention(openCVversion); wpi.getVersions().getWpilibVersion().convention(wpilibVersion); wpi.getVersions().getWpimathVersion().convention(wpimathVersion); dependencies { implementation project(':photon-targeting') implementation "io.javalin:javalin:$javalinVersion" implementation 'org.msgpack:msgpack-core:0.9.0' implementation 'org.msgpack:jackson-dataformat-msgpack:0.9.0' implementation wpilibTools.deps.wpilibJava("wpiutil") implementation wpilibTools.deps.wpilibJava("cameraserver") implementation wpilibTools.deps.wpilibJava("cscore") implementation wpilibTools.deps.wpilibJava("wpinet") implementation wpilibTools.deps.wpilibJava("wpimath") implementation wpilibTools.deps.wpilibJava("ntcore") implementation wpilibTools.deps.wpilibJava("hal") implementation wpilibTools.deps.wpilibJava("wpilibj") implementation wpilibTools.deps.wpilibJava("apriltag") implementation wpilibTools.deps.wpilibJava("wpiunits") implementation wpilibTools.deps.wpilibOpenCvJava("frc" + openCVYear, wpi.versions.opencvVersion.get()) implementation group: "com.fasterxml.jackson.core", name: "jackson-annotations", version: wpi.versions.jacksonVersion.get() implementation group: "com.fasterxml.jackson.core", name: "jackson-core", version: wpi.versions.jacksonVersion.get() implementation group: "com.fasterxml.jackson.core", name: "jackson-databind", version: wpi.versions.jacksonVersion.get() implementation group: "org.ejml", name: "ejml-simple", version: wpi.versions.ejmlVersion.get() implementation group: "us.hebi.quickbuf", name: "quickbuf-runtime", version: wpi.versions.quickbufVersion.get(); implementation "commons-io:commons-io:2.11.0" implementation "commons-cli:commons-cli:1.5.0" implementation "org.apache.commons:commons-lang3:3.12.0" implementation "org.apache.commons:commons-collections4:4.4" implementation "org.apache.commons:commons-exec:1.3" testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.0' testImplementation 'org.junit.jupiter:junit-jupiter-params:5.10.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.0' } test { useJUnitPlatform() testLogging { events "passed", "skipped", "failed", "standardOut", "standardError" } workingDir = new File("${rootDir}") finalizedBy jacocoTestReport } tasks.register('testHeadless', Test) { group = "verification" systemProperty("java.awt.headless", "true") useJUnitPlatform() exclude '**/*BenchmarkTest*' workingDir = "../" } tasks.register('generateJavaDocs', Javadoc) { source = sourceSets.main.allJava classpath = sourceSets.main.compileClasspath destinationDir = file("${projectDir}/build/docs") options.addBooleanOption("Xdoclint:html,missing,reference,syntax", true) options.addBooleanOption('html5', true) if (JavaVersion.current().isJava8Compatible() && project.hasProperty('docWarningsAsErrors')) { // Treat javadoc warnings as errors. // // The second argument '-quiet' is a hack. The one parameter // addStringOption() doesn't work, so we add '-quiet', which is added // anyway by gradle. See https://github.com/gradle/gradle/issues/2354. // // See JDK-8200363 (https://bugs.openjdk.java.net/browse/JDK-8200363) // for information about the nonstandard -Xwerror option. JDK 15+ has // -Werror. options.addStringOption('Xwerror', '-quiet') } if (JavaVersion.current().isJava11Compatible()) { if (!JavaVersion.current().isJava12Compatible()) { options.addBooleanOption('-no-module-directories', true) } doLast { // This is a work-around for https://bugs.openjdk.java.net/browse/JDK-8211194. Can be removed once that issue is fixed on JDK's side // Since JDK 11, package-list is missing from javadoc output files and superseded by element-list file, but a lot of external tools still need it // Here we generate this file manually new File(destinationDir, 'package-list').text = new File(destinationDir, 'element-list').text } } } jacoco { toolVersion = "0.8.10" reportsDirectory = layout.buildDirectory.dir('customJacocoReportDir') } jacocoTestReport { dependsOn testHeadless reports { xml.required = true csv.required = false html.outputLocation = layout.buildDirectory.dir('jacocoHtml') } afterEvaluate { classDirectories.setFrom(files(classDirectories.files.collect { fileTree(dir: it, exclude: "edu/wpi/**" ) })) } }