I’m working on the Chromecast binding, with some relatively major refactoring (like replacing the library used to communicate with cast devices). I have limited testing opportunities because I only have one cast device, there are many different types and use scenarios out there. It’s become clear to me that I need some feedback along the way, I need to be able to somehow make my “test version” of the binding installable for select users.
I’m wondering what is the best/right approach. I can build a version of the binding that suits whatever OH version the user(s) use, so that’s not a problem. But, the binding have a non-OSGified dependency, the library used to communicate with the cast devices. Dependencies won’t normally be packed in the JAR when you build it.
I would like to avoid having to use Maven Shade plugin or similar to build a “combined JAR”, because that would mean both time to figure out how to get this right, and modifications to the bindings that would have to be reverted before creating a PR. At the same time, it’s not completely clear to me where non-OSGified dependencies are deployed in a normal OH installation either. Are they somehow packed with the bundles?
I would also prefer to not have to modify the binding so that it has a different name, preferably it should replace the official version when installed, and revert to the official binding when uninstalled.
I’m not very eager going down the KAR route, since they are “hard to build” and difficult to control. If the name/coordinates are the same as the official add-on, would a KAR even lead to the bundle in the KAR being used - instead of the one fetched via Maven?
My thinking is thus that it would either have to be a JAR or a marketplace add-on. But, in both these cases, I don’t know how a conflicting name with the official binding will behave, and I don’t know how to make sure that the user gets the non-OSGified dependency.
I can think of many potential ways to approach this, but this must be something that people have done many times before, so instead of figuring this out by trial and error - perhaps somebody can recommend something that actually works, with as few modifications to the binding itself as possible to make it work..?