Including a vendor’s json file in your /vendordeps folder adds a vendor library to your classpath. Using implementation 'group:artifact:version' under gradle’s dependencies achieves the same effect. Besides integrating with the wpilib vscode plugin (which checks for updates to vendor deps), What’s the difference?
Also, as an aside, it appears that the gradle-RIO plugin has functions for some deps already, per this thread. Where can I find a list of all such functions/corresponding libs?
The vendor setup is required for any vendors that use native libraries (e.g. JNI), and for C++ support to work. See this post: 2019 Kickoff Release of WPILib.
The GradleRIO thread you linked to was from 2018, and is no longer applicable. We moved from that model to the vendordeps JSON files when we standardized on GradleRIO starting in 2019.
Thank you for your quick response. As another followup (not required at all, I know I’m tiresome), what is your opinion on packaging vendor deps (which may have their own deps and submodules for jvm/jni/cpp) as single maven dependencies? I’ve been using this approach, creating one for both CTRE and Rev stuff.
Explanation:
Each of these projects parses its own copy of a vendor.json file, finds the jvm/jni deps (no cpp yet!), then outputs them to be copied to the project’s build.gradle. From their, the project exposes them to the sonsumer’s classpath, becoming a depdency itself