Athena vendordeps (install these from WPILib vendordep manager):
- https://raw.githubusercontent.com/FRC-6390/FRC-Athena/refs/heads/main/vendordeps/FRC6390-Athena-Core.json
- https://raw.githubusercontent.com/FRC-6390/FRC-Athena/refs/heads/main/vendordeps/FRC6390-Athena-CTRE.json
- https://raw.githubusercontent.com/FRC-6390/FRC-Athena/refs/heads/main/vendordeps/FRC6390-Athena-REV.json
- https://raw.githubusercontent.com/FRC-6390/FRC-Athena/refs/heads/main/vendordeps/FRC6390-Athena-PhotonVision.json
- https://raw.githubusercontent.com/FRC-6390/FRC-Athena/refs/heads/main/vendordeps/FRC6390-Athena-Limelight.json
- https://raw.githubusercontent.com/FRC-6390/FRC-Athena/refs/heads/main/vendordeps/FRC6390-Athena-HeliOS.json
- https://raw.githubusercontent.com/FRC-6390/FRC-Athena/refs/heads/main/vendordeps/FRC6390-Athena-Pathplanner.json
- https://raw.githubusercontent.com/FRC-6390/FRC-Athena/refs/heads/main/vendordeps/FRC6390-Athena-Choreo.json
- https://raw.githubusercontent.com/FRC-6390/FRC-Athena/refs/heads/main/vendordeps/FRC6390-Athena-Studica.json
- https://raw.githubusercontent.com/FRC-6390/FRC-Athena/refs/heads/main/vendordeps/Studica-2026.0.0.json
External vendordeps required by Athena modules:
- https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2026-latest.json
- https://software-metadata.revrobotics.com/REVLib-2026.json
- https://maven.photonvision.org/repository/internal/org/photonvision/photonlib-json/1.0/photonlib-json-1.0.json
- https://raw.githubusercontent.com/Prometheus-Dynamics/PDLib/refs/heads/main/vendordeps/PDLib-2026.json
- https://3015rangerrobotics.github.io/pathplannerlib/PathplannerLib.json
- https://choreo.autos/lib/ChoreoLib2026.json
This section is for Athena maintainers and contributors who build/publish ARCP JNI natives (athena-arcp-java).
If you only consume released Athena vendordeps in a robot project, you can skip this section.
Recommended path for cross-target JNI bundles is Dockerized cross-build.
- Linux: install Docker Engine from official docs for your distro: https://docs.docker.com/engine/install/
- macOS/Windows: install Docker Desktop: https://docs.docker.com/desktop/
Linux post-install (so docker runs without sudo):
sudo usermod -aG docker $USER
newgrp dockerVerify:
docker --version
docker run --rm hello-world
docker infoWindows troubleshooting:
- If you see
failed to connect to Docker API at npipe:////./pipe/..., Docker Desktop is installed but the engine is not running/reachable. - Start Docker Desktop and wait until it reports "Engine running", then retry.
- ARCP
hostmode on supported Linux/Windows hosts now uses Docker by default. - If you need host-native ARCP JNI build, disable Docker cross-build:
./gradlew :athena-arcp-java:prepareArcpNativeResources -ParcpNativeMode=host -ParcpUseDockerCross=false
Install Rust via rustup:
- macOS/Linux:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh- Windows (PowerShell):
winget install Rustlang.RustupRestart terminal, then verify:
rustup --version
rustc --version
cargo --version
rustup default stableARCP vendor JNI matrix uses these targets:
armv7-unknown-linux-gnueabihfx86_64-unknown-linux-gnuaarch64-unknown-linux-gnux86_64-pc-windows-gnu
Install all required targets:
rustup target add \
armv7-unknown-linux-gnueabihf \
x86_64-unknown-linux-gnu \
aarch64-unknown-linux-gnu \
x86_64-pc-windows-gnuVerify installed targets:
rustup target list --installedRecommended (Docker cross-build):
./gradlew :athena-arcp-java:prepareArcpNativeResources -ParcpNativeMode=vendor -ParcpUseDockerCross=trueNative cross-build (without Docker) requires additional linker toolchains:
armv7-unknown-linux-gnueabihf->arm-linux-gnueabihf-gccaarch64-unknown-linux-gnu->aarch64-linux-gnu-gccx86_64-pc-windows-gnu->x86_64-w64-mingw32-gcc(for direct GNU Windows target builds)
Windows host note: without Docker cross-build, the Windows JNI target falls back to x86_64-pc-windows-msvc and still stages to native/windows-x86_64/arcp_jni.dll.
Host-mode build (Docker by default on supported Linux/Windows hosts):
./gradlew :athena-arcp-java:prepareArcpNativeResources -ParcpNativeMode=hostForce host-native build (no Docker):
./gradlew :athena-arcp-java:prepareArcpNativeResources -ParcpNativeMode=host -ParcpUseDockerCross=falseMinimum required for most teams:
Full guide:
-
docs/core/wpilib-project-setup.md -
Install Athena vendordep(s).
-
Keep WPILib executable/fat-jar wiring for rio deploy (especially if you edit
jar):
def ROBOT_MAIN_CLASS = "frc.robot.Main"
def deployArtifact = deploy.targets.roborio.artifacts.frcJava
jar {
from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
from sourceSets.main.allSource
manifest edu.wpi.first.gradlerio.GradleRIOPlugin.javaManifest(ROBOT_MAIN_CLASS)
duplicatesStrategy = DuplicatesStrategy.INCLUDE
}
deployArtifact.jarTask = jar
wpi.java.configureExecutableTasks(jar)Only if using Athena State DSL/compiler-plugin features:
- add Athena maven to
pluginManagement.repositoriesinsettings.gradle - add
athena-pluginclasspath +apply plugin: "ca.frc6390.athena.plugin"inbuild.gradle
Build changed Athena modules and downstream dependents (default build behavior):
./gradlew buildRun the changed-module task directly:
./gradlew buildChangedModulesBuild changed modules from a specific git base:
./gradlew buildChangedModules -PchangedSince=origin/mainForce build all Athena modules:
./gradlew buildAllModulesForce all modules through root build:
./gradlew build -PbuildAllModules=trueBuild each module directly (per dependency module):
./gradlew :athena-core:build
./gradlew :athena-ctre:build
./gradlew :athena-rev:build
./gradlew :athena-photonvision:build
./gradlew :athena-limelight:build
./gradlew :athena-helios:build
./gradlew :athena-pathplanner:build
./gradlew :athena-choreo:build
./gradlew :athena-studica:buildPublish all modules locally to WPILib:
./gradlew publish -PpublishMode=localPublish all modules online:
./gradlew publish -PpublishMode=onlinePublish a single module locally:
./gradlew :athena-core:publishToMavenLocal
./gradlew :athena-ctre:publishToMavenLocal
./gradlew :athena-rev:publishToMavenLocal
./gradlew :athena-photonvision:publishToMavenLocal
./gradlew :athena-limelight:publishToMavenLocal
./gradlew :athena-helios:publishToMavenLocal
./gradlew :athena-pathplanner:publishToMavenLocal
./gradlew :athena-choreo:publishToMavenLocal
./gradlew :athena-studica:publishToMavenLocalSet explicit version/FRC year during build or publish:
./gradlew build -Pversion="2026.1.99" -PfrcYear="2026"
./gradlew publish -PpublishMode=local -Pversion="2026.1.99" -PfrcYear="2026"Online publish credentials:
export MAVEN_USERNAME=<username>
export MAVEN_PASSWORD=<token-or-password>
./gradlew publish -PpublishMode=online