On Sun, Feb 22, 2015 at 6:26 AM, Lennart Jörelid <lennart.jore...@gmail.com> wrote: > Actually, Dennis, I would argue that your problem is the smaller one of the > two main problems with the release plugin. > > The bigger problem is that the release plugin requires too much manual > fiddling to apply in a big maven reactor. For example; given a reactor with > 250+ maven projects you want to make a new release since 74 of these 250+ > projects now contain changes following 4 refactorings. The question now is > not one of which semantic versioning principle I'm applying but simply one > of practicality: > > Which of the 74 projects should now receive a major, minor or micro version > upgrade?
I would be somewhat in awe of a project that included 74 components that all (or even most) published an API that needed SemVer. My point here is commentary on yours, not an argument. In my experiment, typically a multi-module monster has one 'api', and then a complex internal structure. To the outside world, SemVer applies to the API, not to all the insides. Or, it applies to the union. If the pieces are so independent that your scenario applies, I would wonder if a multi-module structure is really appropriate. > As deliverables scale, the burden of using a proper versioning scheme is > simply that there is no tooling support in figuring out if a change in > project X should yield a major, minor or micro version bump - and doing > this manually is simply not a scalable task at all. > > The release plugin seems fine to use when it comes to smaller projects such > as most of the maven plugins, but it has distinct usability problems for > bigger reactors. Release managers in most of my later projects simply > decided that the only sensible solution was to (re-)release all projects in > the reactor with new versions. This implies that most of the maven > component projects misuse semver, but that the release process works.... at > all. > > I believe that we need a plugin which could calculate a suggested version > for a project given the last release's binary API and changes since the > last release (in the style of clirr + something else). Such a plugin would > also be really useful in a continuous delivery scenario where semver is > needed but largely ignored due to technical difficulties in calculating > version numbers. > > > > 2015-02-21 23:05 GMT+01:00 Dennis Lundberg <denn...@apache.org>: > >> Hi, >> >> Although I strongly feel that SemVer [1] is the way to go when it >> comes to versioning, I still haven't started using it though. That got >> me thinking about why that is the case. I've come to the conclusion >> that I'm lazy :) >> >> It all comes down to tooling. Being accustomed to, and spoiled by, >> using the Release Plugin, I don't want to do anything manually any >> more. That includes as simple a thing as changing the "next version" >> (or developmentVersion) manually during the interactive command line >> session when using the Release Plugin. I want it to be the guessed >> correctly for me. Let me outline an example to show you what I mean. >> The vast majority of releases I make, both here and at my day job, are >> minor releases. So I want the Release Plugin to work for me, and not >> against me. >> >> >> Not using SemVer >> >> 1.0-SNAPSHOT --> 1.0 --> 1.1-SNAPSHOT >> >> No problems here, the Release Plugin will correctly guess that >> 1.1-SNAPSHOT is the next version that I want to use. Just hit <enter> >> a couple of times during the release process. >> >> >> Using SemVer >> >> 1.0.0-SNAPSHOT --> 1.0.0 --> 1.0.1-SNAPSHOT >> >> This is not what I want. The Release Plugin will guess that the next >> version should be 1.0.1-SNAPSHOT. To change it I have to type in the >> value that I want on the command line. I'm too lazy for that. Instead >> I want the Release Plugin to do this: >> >> 1.0.0-SNAPSHOT --> 1.0.0 --> 1.1.0-SNAPSHOT >> >> >> How can we solve this? The solution that I have come up with is a new >> parameter for release:prepare tentatively called "versionIncrement" >> that can take the values "major", "minor" and "patch", with "patch" >> being the default value for backwards compatibility. >> >> In my use case above I would simply set versionIncrement=minor and the >> Release Plugin would then do things my way. >> >> What are your thoughts on this? >> >> I would like for us to start using SemVer for all releases in the >> Maven project, not just in core. What do you think? >> >> >> [1] http://semver.org/ >> >> -- >> Dennis Lundberg >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >> For additional commands, e-mail: dev-h...@maven.apache.org >> >> > > > -- > > -- > +==============================+ > | Bästa hälsningar, > | [sw. "Best regards"] > | > | Lennart Jörelid > | EAI Architect & Integrator > | > | jGuru Europe AB > | Mölnlycke - Kista > | > | Email: l...@jguru.se > | URL: www.jguru.se > | Phone > | (skype): jgurueurope > | (intl): +46 708 507 603 > | (domestic): 0708 - 507 603 > +==============================+ --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org For additional commands, e-mail: dev-h...@maven.apache.org