Files
PhotonVision/shared/javacommon.gradle
Sam Freund e9006a2803 Upgrade to wpilib alpha-6 (#2434)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Ryanforce08 <rradtke1208@gmail.com>
Co-authored-by: PJ Reiniger <pj.reiniger@gmail.com>
Co-authored-by: Jade Turner <spacey-sooty@proton.me>
Co-authored-by: Matt Morley <matthew.morley.ca@gmail.com>
2026-05-26 20:47:48 -05:00

202 lines
5.7 KiB
Groovy

apply plugin: 'maven-publish'
apply plugin: 'java-library'
apply plugin: 'jacoco'
apply plugin: 'com.google.protobuf'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(25)
}
sourceCompatibility = JavaVersion.VERSION_25
targetCompatibility = JavaVersion.VERSION_25
}
def baseArtifactId = nativeName
def artifactGroupId = 'org.photonvision'
def javaBaseName = "_GROUP_org_photonvision_${baseArtifactId}_ID_${baseArtifactId}-java_CLS"
def outputsFolder = file("$buildDir/outputs")
def licenseFile = ext.licenseFile
def externalLicensesFolder = file("$rootDir/ExternalLicenses")
javadoc {
options {
encoding = 'UTF-8'
links "https://github.wpilib.org/allwpilib/docs/release/java/"
}
}
jar {
from licenseFile
from externalLicensesFolder
}
task sourcesJar(type: Jar, dependsOn: classes) {
archiveClassifier = 'sources'
from sourceSets.main.allSource
from licenseFile
from externalLicensesFolder
}
task javadocJar(type: Jar, dependsOn: javadoc) {
archiveClassifier = 'javadoc'
from javadoc.destinationDir
from licenseFile
from externalLicensesFolder
}
task outputJar(type: Jar, dependsOn: classes) {
archiveBaseName = javaBaseName
destinationDirectory = outputsFolder
from sourceSets.main.output
from licenseFile
from externalLicensesFolder
}
task outputSourcesJar(type: Jar, dependsOn: classes) {
archiveBaseName = javaBaseName
destinationDirectory = outputsFolder
archiveClassifier = 'sources'
from sourceSets.main.allSource
from licenseFile
from externalLicensesFolder
}
task outputJavadocJar(type: Jar, dependsOn: javadoc) {
archiveBaseName = javaBaseName
destinationDirectory = outputsFolder
archiveClassifier = 'javadoc'
from javadoc.destinationDir
from licenseFile
from externalLicensesFolder
}
artifacts {
archives sourcesJar
archives javadocJar
archives outputJar
archives outputSourcesJar
archives outputJavadocJar
}
addTaskToCopyAllOutputs(outputSourcesJar)
addTaskToCopyAllOutputs(outputJavadocJar)
addTaskToCopyAllOutputs(outputJar)
build.dependsOn outputSourcesJar
build.dependsOn outputJavadocJar
build.dependsOn outputJar
publishing {
publications {
java(MavenPublication) {
artifact jar
artifact sourcesJar
artifact javadocJar
artifactId = "${baseArtifactId}-java"
groupId = artifactGroupId
version = pubVersion
}
}
repositories {
maven {
// If we're trying to copy local outputs, just throw everything into build/maven
// The problem here is we can't specify which repo to publish to easily, so we have to choose one or the other
if (project.hasProperty('copyOfflineArtifacts')) {
url(localMavenURL)
} else {
url = photonMavenURL
credentials {
username = 'ghactions'
password = System.getenv("ARTIFACTORY_API_KEY")
}
}
}
}
}
test {
useJUnitPlatform()
systemProperty 'junit.jupiter.extensions.autodetection.enabled', 'true'
systemProperty 'jsonb.disableAdapterSpi', 'true'
testLogging {
events "failed"
exceptionFormat = "full"
showStandardStreams = true
}
forkEvery = 1
finalizedBy jacocoTestReport
}
wpilibTools.deps.wpilibVersion = wpilibVersion
dependencies {
if(project.hasProperty('includePhotonTargeting')) {
implementation project(":photon-targeting")
}
implementation "org.wpilib.wpiutil:wpiutil-java:$wpilibVersion"
implementation "org.wpilib.datalog:datalog-java:$wpilibVersion"
implementation "org.wpilib.cameraserver:cameraserver-java:$wpilibVersion"
implementation "org.wpilib.cscore:cscore-java:$wpilibVersion"
implementation "org.wpilib.wpinet:wpinet-java:$wpilibVersion"
implementation "org.wpilib.wpimath:wpimath-java:$wpilibVersion"
implementation "org.wpilib.ntcore:ntcore-java:$wpilibVersion"
implementation "org.wpilib.hal:hal-java:$wpilibVersion"
implementation "org.wpilib.wpilibj:wpilibj-java:$wpilibVersion"
implementation "org.wpilib.apriltag:apriltag-java:$wpilibVersion"
implementation "org.wpilib.wpiunits:wpiunits-java:$wpilibVersion"
implementation wpilibTools.deps.wpilibOpenCvJava(openCVversion)
implementation group: "io.avaje", name: "avaje-jsonb", version: avajeJsonbVersion
annotationProcessor group: "io.avaje", name: "avaje-jsonb-generator", version: avajeJsonbVersion
implementation group: "org.ejml", name: "ejml-simple", version: ejmlVersion
implementation group: "us.hebi.quickbuf", name: "quickbuf-runtime", version: quickbufVersion;
testImplementation(platform('org.junit:junit-bom:5.11.4'))
testImplementation 'org.junit.jupiter:junit-jupiter-api'
testImplementation 'org.junit.jupiter:junit-jupiter-params'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
jacoco {
toolVersion = jacocoVersion
}
jacocoTestReport {
reports {
xml.required = true
html.required = true
}
}
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.21.12'
}
plugins {
quickbuf {
artifact = 'us.hebi.quickbuf:protoc-gen-quickbuf:1.3.3'
}
}
generateProtoTasks {
all().configureEach { task ->
task.builtins {
// cpp {}
// The protobuf-java code is bad -- use quickbuf
remove java
}
task.plugins {
quickbuf {
option "gen_descriptors=true"
}
}
}
}
}