plugins { id 'java' id 'application' id 'com.github.johnrengelman.shadow' version '5.2.0' id "com.diffplug.gradle.spotless" version "3.28.0" id "jacoco" } apply from: 'versioningHelper.gradle' mainClassName = 'org.photonvision.Main' group 'org.photonvision' version versionString sourceCompatibility = 11 repositories { jcenter() mavenCentral() maven { url = 'https://frcmaven.wpi.edu:443/artifactory/development' } } ext { wpilibVersion = '2020.3.2-99-g9f4de91' openCVVersion = '3.4.7-2' } dependencies { implementation "io.javalin:javalin:3.7.0" compile group: 'eu.xeli', name: 'jpigpio_2.12', version: '0.1.0' implementation "com.fasterxml.jackson.core:jackson-annotations:2.10.0" implementation "com.fasterxml.jackson.core:jackson-core:2.10.0" implementation "com.fasterxml.jackson.core:jackson-databind:2.10.0" implementation "org.msgpack:msgpack-core:0.8.20" implementation "org.msgpack:jackson-dataformat-msgpack:0.8.20" implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.9' implementation "org.apache.commons:commons-math3:3.6.1" implementation group: 'commons-io', name: 'commons-io', version: '2.6' implementation group: 'commons-cli', name: 'commons-cli', version: '1.4' implementation "org.apache.commons:commons-collections4:4.4" implementation "org.apache.commons:commons-exec:1.3" // wpilib stuff implementation "edu.wpi.first.wpiutil:wpiutil-java:$wpilibVersion" implementation "edu.wpi.first.cameraserver:cameraserver-java:$wpilibVersion" implementation "edu.wpi.first.cscore:cscore-java:$wpilibVersion" compile "edu.wpi.first.cscore:cscore-jni:$wpilibVersion:linuxaarch64bionic" compile "edu.wpi.first.cscore:cscore-jni:$wpilibVersion:linuxraspbian" compile "edu.wpi.first.cscore:cscore-jni:$wpilibVersion:linuxx86-64" compile "edu.wpi.first.cscore:cscore-jni:$wpilibVersion:osxx86-64" compile "edu.wpi.first.cscore:cscore-jni:$wpilibVersion:windowsx86-64" implementation "edu.wpi.first.ntcore:ntcore-java:$wpilibVersion" compile "edu.wpi.first.ntcore:ntcore-jni:$wpilibVersion:linuxaarch64bionic" compile "edu.wpi.first.ntcore:ntcore-jni:$wpilibVersion:linuxraspbian" compile "edu.wpi.first.ntcore:ntcore-jni:$wpilibVersion:linuxx86-64" compile "edu.wpi.first.ntcore:ntcore-jni:$wpilibVersion:osxx86-64" compile "edu.wpi.first.ntcore:ntcore-jni:$wpilibVersion:windowsx86-64" implementation "edu.wpi.first.thirdparty.frc2020.opencv:opencv-java:$openCVVersion" compile "edu.wpi.first.thirdparty.frc2020.opencv:opencv-jni:$openCVVersion:linuxaarch64bionic" compile "edu.wpi.first.thirdparty.frc2020.opencv:opencv-jni:$openCVVersion:linuxraspbian" compile "edu.wpi.first.thirdparty.frc2020.opencv:opencv-jni:$openCVVersion:linuxx86-64" compile "edu.wpi.first.thirdparty.frc2020.opencv:opencv-jni:$openCVVersion:osxx86-64" compile "edu.wpi.first.thirdparty.frc2020.opencv:opencv-jni:$openCVVersion:windowsx86-64" compile "org.slf4j:slf4j-simple:1.8.0-beta4" // Zip compile "org.zeroturnaround:zt-zip:1.14" // test stuff testImplementation('org.junit.jupiter:junit-jupiter:5.6.0') } shadowJar { configurations = [project.configurations.runtimeClasspath] archiveFileName.set("photonvision-${project.version}.jar") } test { useJUnitPlatform() testLogging { events "passed", "skipped", "failed", "standardOut", "standardError" } } task testHeadless(type: Test) { group = 'verification' systemProperty("java.awt.headless", "true") useJUnitPlatform() } task runNpmOnClient(type: Exec) { workingDir "${projectDir}/../photon-client" if (System.getProperty('os.name').toLowerCase(Locale.ROOT).contains('windows')) { commandLine 'cmd', '/c', 'npm run build' } else { commandLine 'npm', 'run', 'build' } } task copyClientUIToResources(type: Copy) { from "${projectDir}/../photon-client/dist/" into "${projectDir}/src/main/resources/web/" } task buildAndCopyUI {} buildAndCopyUI.dependsOn copyClientUIToResources copyClientUIToResources.dependsOn runNpmOnClient copyClientUIToResources.shouldRunAfter runNpmOnClient task generateJavaDocs(type: Javadoc) { source = sourceSets.main.allJava classpath = sourceSets.main.compileClasspath destinationDir = file("${projectDir}/build/docs") } spotless { java { googleJavaFormat() paddedCell() indentWithTabs(2) indentWithSpaces(4) removeUnusedImports() } java { target "src/*/java/org/**/*.java" licenseHeaderFile "$rootDir/LicenseHeader.txt" targetExclude("src/main/java/org/photonvision/PhotonVersion.java") } } jacocoTestReport { dependsOn test // Tests are required to run before generating the report reports { xml.enabled true } afterEvaluate { classDirectories.setFrom(files(classDirectories.files.collect { fileTree(dir: it, exclude: 'edu/wpi/**' ) })) } }