Calling all Java experts 🙂
I'm working to support lakeFSFS on Hadoop3. This will be a distinct package on Maven central -- it possesses different semantics (hadoop3 FileSystem has a subtly different spec than hadoop2 FileSystem) and different (provided!) dependencies. I'm trying to figure out the Maven Way to name this package.
Does anyone have any suggestions, or ideally examples of how to do this?
This is particularly important _*if you are a developer who uses LakeFSFileSystem*_: it will directly impact how you build your code (and a chance to get a strange hard-to-debug error at runtime...).
The only option that I can see so far is to incorporate a string (`_hadoop2`/`_hadoop3`, or maybe `-hadoop2`/`-hadoop3`) into the package name. This is similar to the way Scala packages incorporate a Scala language minor version into their name -- and for a similar reason: the Scala runtime library is an implicitly provided dependency to all Scala packages, and that changes incompatibly between Scala minor versions.
08/14/2022, 6:38 AM
I can’t find any formal Maven naming conventions that provide guidance in such case, and your suggestion to incorporate the Hadoop versions as string makes sense to me! I would consider adding the string to the artifactId rather than to the end of the jar name, because the different dependencies create different artifacts.