Note: I am posting this on dev@ rather than general@incubator to keep the noise down and hoping that someone willing to help us can subscribe to our dev@.
The Memory repository is the first one that we are migrating to Apache because it has virtually no dependencies and other repositories in the DataSketches library have dependencies on Memory. Thus, this is where we are doing our learning on how to migrate a repository to Apache. Once we get this one right, it shouldn't be too hard to migrate the remaining repos. The main area where we could use some help is with configuring Maven / pom.xml to do the right thing. None of us on our little team are Maven experts so could use some help from someone with a lot of experience with Maven and the Apache release process. So far, in order to simplify the process I have set up a [bash script]( https://github.com/apache/incubator-datasketches-memory/blob/master/scripts/bashDeployToDist.sh) to manage the release to dist.apache.org. It does not rely on the pom at all and assembles the .zip file, signs it and uploads it to dist using SVN. I found this much easier than wrestling with Maven. Placing artifacts into Nexus, I am using _mvn deploy_ instead of the normal Maven release process. One of the reasons for using deploy is that, for now, I want to manually change the version number and suffixes. The Maven release plugin changes those and commits intermediate copies into the base directory, etc. Messy. The big disadvantage of not using Maven is all the checks that the various plugins can do for you, e.g., rat-plugin, strict compilation, checkstyle, etc. So with the current state, we are relying on whoever is the "release engineer" (currently, me!) to perform all these checks prior to running the bash script anyway. So it seems that eventually, either we need to go whole hog having Maven do everything, which seems overly complicated, or consider moving to Gradle (which I am not familiar with either, but it seems lots of teams are moving that way). Either way I have very little confidence that our pom.xml is properly set up. Here are a few immediate questions: - It doesn't appear that the Nexus artifacts require a GPG signature only the DIST assembly requires GPG, which the script is handling. So why do we need the gpg-plugin? - It is not clear to me when a profile should be used (e.g., for deploy) vs using the deploy process as part of the pom main build lifecycle. I have studied the pom files of Druid, Beam 2.2.0, 2.4.0 (before they moved to Gradle), Dubbo, Pinot, Commons-CSV, and of course the Apache Parent Pom and the Maven super pom in my attempts to understand how to wrestle this beast down to the mat. Alas, all of them are very different and the Maven documentation on the plugins sucks (many parameters are missing or poorly documented so I have had to dig up the plug-in source code to try to figure out what some parameters/arguments do. Just having someone look over our pom file would be a big help. Any advice or help would be appreciated.
