crush depth

Lurking Between Releases

A while back, I talked about moving to the bndtools suite of Maven plugins in preference to the Felix bundle plugin. The reason for this is better cross-IDE compatibility: Eclipse only really works with bndtools, whilst Intellij IDEA only really works with the Felix maven-bundle-plugin. This means that the plugin you choose to use in your Maven project ends up dictating which IDE developers must use in order to work with it. That's not great! However, I discovered that Intellij IDEA could be configured to use the OSGi manifest file that the bndtools Maven plugin creates, and therefore that means that developers can use either IDE as long as I use the bndtools plugins in my own projects.

Unfortunately, upon switching to the bndtools plugin in the primogenitor, I soon ran into MNG-6059 and MNG-5951. Briefly, Maven has some baked-in behaviour that is intended to produce metadata that follows the conventions people used when everyone used SVN to manage source code. However, those conventions result in Maven producing metadata that's essentially incorrect with regards to modern conventions. Specifically, Maven will automatically append module names to URIs specified in your project, because it assumes that you've laid out files in a particular way on remote servers. This automatic name appending could not previously be turned off. However, Maven 3.6.0 provided support for some attributes that you could place into your pom.xml files that would disable this automatic appending. Additionally, 3.6.0 comes with numerous fixes for working with Java 11 bytecode. As I recently decided that Java 11 was the new minimum version that I was going to support, 3.6.0 is really a requirement moving forward.

Unfortunately, this has now lead to further problems! One problem is that it's not possible to push a pom.xml file containing the new attributes to Maven Central because the version of Nexus running on Central can't parse the new POM files yet. The second problem is that the attributes are not inherited. I currently have over 850 pom.xml files spread over close to a hundred projects. There's just no way I'm going to edit each and every pom.xml file and add those attributes by hand. I want to specify them once in the primogenitor and have them apply everywhere. I've raised both points on the Maven mailing list, and my cries have been heard. All of this will hopefully be fixed in 3.6.1.

After all is said and done, this means that I can't start moving projects to Java 11 just yet or even do a full 3.0.0 release of the primogenitor because I need Maven 3.6.1 to do so. I wasn't available to test 3.6.0 much before it was released, but I can do plenty of testing for 3.6.1. It looks like I'll temporarily be in limbo for a couple of months!