Just a little anecdote here on the pitfalls of branching maven projects without some kind of control.
We have a SNAPSHOT version for trunk. We use the maven-release-plugin to create our maintenance branches at release time. The plugin, by default, uses the current dev version on trunk as the branch version, and prompts for a new trunk version. Perfect. That's exactly what we want. A developer cut a dev branch from trunk several months ago, just using the normal svn copy, and didn't think about changing the version. He also created a Jenkins project for it. The dev branch sat untouched for a couple of months, then a checkin triggered a new build. Later, we were scratching our heads as to why another build dependent the trunk version of that same artifact was failing. Turns out it was using the artifact built from old code on the dev branch. After some investigation, the developer was able to pinpoint the code, which pointed to the maven artifact causing the problem. We put the branch and revision from the buildnumber-maven-plugin into the manifest, so we could see the artifact in question was built from this rarely touched dev branch. From that we were able to track the issue to the Jenkins build. A reason to control branch versions. An argument to use project-specific local repositories in Jenkins (see the "Maven concurrent builds" thread from earlier today). A good use of the manifest. And possibly even an argument in support of what you are looking for. Matt > -----Original Message----- > From: Seth Call [mailto:[email protected]] > Sent: Wednesday, March 07, 2012 12:41 PM > To: [email protected] > Subject: Re: Is it possible to tie current git branch to project > version? > > Hi Matt, > > Thanks for the pointer to the release plugin. My desire is to not > control > the process of making branches or changing versions through plugins. I > want developers to be able to use git for things branch related, and > use > maven for compile/build related. > > I think the release-plugin is trying to do too much (unless of course > you > want maven to do *everything* :) ) Regardless of my opinion, though, > you > are a big help. I'll still try to find the route I'm trying to take... > > Seth > > On Wed, Mar 7, 2012 at 10:03 AM, walshmatt [via Maven] < > [email protected]> wrote: > > > Seth. > > > > I tried doing something similar to this using the > > buildnumber-maven-plugin. It returns the branch and revision number > (I > > use Subversion, not Git), but looks like you're trying something > > similar. > > > > The problem I encountered (at least how I interpreted it) is that the > > plugin doesn't run soon enough - the pom has already been interpreted > > before the plugin is called, so the ${branch} wasn't resolved when I > > needed it. I wasn't trying to change the version, but I was trying to > > use the property somewhere else. I think you'd have the same issue > with > > version though. > > > > You can use the maven-release-plugin to create your branch. It > prompts > > for a new version and updates and commits your poms automatically (at > > least for SVN). When/if you merge your changes back to the master > > branch, you'd probably need to update your versions again, but that > can > > be accomplished with the versions plugin. > > > > HTH, > > Matt > > > > > -----Original Message----- > > > From: Seth Call [mailto:[hidden > email]<http://user/SendEmail.jtp?type=node&node=5544568&i=0>] > > > > > Sent: Wednesday, March 07, 2012 8:19 AM > > > To: [hidden > email]<http://user/SendEmail.jtp?type=node&node=5544568&i=1> > > > Subject: Re: Is it possible to tie current git branch to project > > > version? > > > > > > Hi Roy, > > > > > > I don't understand what 'tagging our repo' means. Is this a > feature > > of > > > > > your remote repository? Sorry... I googled but I don't know what > you > > > are > > > saying... > > > > > > But aside from that, I really don't care about git hash in this > > > question... > > > let me explain what I'm trying to acheive... > > > > > > > > > > > > As a developer: > > > * If I'm on branch master, I want my project version to be master- > > > SNAPSHOT > > > > > > * If I'm on branch development, I want my project version to be > > > development-SNAPSHOT > > > > > > I'd like that to happen automatically when I make the branch; I > know > > > this > > > is rather dynamic so I assume a plugin at a minimum is required. > I'm > > > also > > > not interested in using git local hooks if at all avoidable because > > > they > > > have their own drawbacks. > > > > > > This versioning scheme is very important; making a branch is making > a > > > new > > > version. So, downstream projects that depend on my project:master- > > > SNAPSHOT > > > should *not* pickup my new branch's build artifact-not unless, of > > > course, I > > > go to that downstream project and change it's dependency version to > > say > > > project:development-SNAPSHOT. > > > > > > In summary, they are different versions, and so if you don't > version > > > your > > > project as you make a branch, then you will now have indeterminate > > > build > > > resolution because 'the-last-branch-you-build-will-win' sort of > > > problems. > > > Also, all of this should work locally (not require a build > server), > > so > > > > > I'm > > > limiting myself to maven-only techniques... > > > > > > Any help is greatly appreciated. I hope there is some way to > achieve > > > this > > > that I'm just not thinking of... > > > > > > But if anyone can say definitively that you can not put a variable > in > > > the > > > <version> tag of an artifact, then I at least know a plugin-based > > > solution > > > is not an option. > > > > > > Regards, > > > Seth > > > > > > On Wed, Mar 7, 2012 at 6:00 AM, Lyons, Roy [via Maven] < > > > [hidden email] > <http://user/SendEmail.jtp?type=node&node=5544568&i=2>> > > wrote: > > > > > > > :-) we tag our repo with "branchname!RP-BL-mavenlabel" to help in > > > > location. Rp is for release prepare and bl is for baseline > > > (carryover from > > > > clearcase terminology) > > > > > > > > Just remember that in git a hash doesn't belong to a branch, it > is > > > simply > > > > attached to a linked list of hashes. A "branch" is simply a tag > > > pointing > > > > to a hash being designated as a "head". You can just as easily > use > > > the tag > > > > created by the release plugin to checkout, and then make some > bugfix > > > branch > > > > from that location. > > > > > > > > > > > > Sent from my Blackberry. > > > > > > > > ----- Original Message ----- > > > > From: Seth Call <[hidden > > > email]<http://user/SendEmail.jtp?type=node&node=5543915&i=0>> > > > > > > > > To: [hidden email] > > > <http://user/SendEmail.jtp?type=node&node=5543915&i=1><[hidden > > > > email] <http://user/SendEmail.jtp?type=node&node=5543915&i=2>> > > > > Sent: Tue Mar 06 22:01:07 2012 > > > > Subject: Is it possible to tie current git branch to project > > version? > > > > > > > > > > Hi there, > > > > > > > > I've seen indication when searching the internet that it isn't > > > possible to > > > > put variables in <version> of a project (unless those variables > are > > > > hardcoded <properties> or provided at the command line), but I > > > thought I'd > > > > ask the list ... > > > > > > > > Say there was a plugin that would invoke 'git branch' to > determine > > > the > > > > current branch, and to then make that available to the project as > a > > > > variable; call it ${branch}. I'd like to use this variable then > in > > > the > > > > version tag: > > > > > > > > <project> > > > > <groupId>blah</groupId> > > > > <artifactId>blah</artifactId> > > > > <version>${branch}-SNAPSHOT</version> > > > > </project> > > > > > > > > The reason I want to do this is that I'm realizing, for our > > internal- > > > only > > > > code projects, that a branch is always synonymous with a version > of > > a > > > > > > project, and ideally the act of being of switching branches would > be > > > all > > > > it > > > > takes to switch your maven project's version. > > > > > > > > Is this possible if I were to make a maven plugin? > > > > > > > > Thanks! > > > > Seth > > > > > > > > > > > > > > > > > > > > -- > > > > View this message in context: > > > > http://maven.40175.n5.nabble.com/Is-it-possible-to-tie-current- > git- > > > branch-to-project-version-tp5543110p5543110.html > > > > Sent from the Maven - Users mailing list archive at Nabble.com. > > > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: [hidden > > > email]<http://user/SendEmail.jtp?type=node&node=5543915&i=3> > > > > For additional commands, e-mail: [hidden > > > email]<http://user/SendEmail.jtp?type=node&node=5543915&i=4> > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > To unsubscribe, e-mail: [hidden > > > email]<http://user/SendEmail.jtp?type=node&node=5543915&i=5> > > > > For additional commands, e-mail: [hidden > > > email]<http://user/SendEmail.jtp?type=node&node=5543915&i=6> > > > > > > > > > > > > ------------------------------ > > > > If you reply to this email, your message will be added to the > > > discussion > > > > below: > > > > > > > > http://maven.40175.n5.nabble.com/Is-it-possible-to-tie-current- > git- > > > branch-to-project-version-tp5543110p5543915.html > > > > To unsubscribe from Is it possible to tie current git branch to > > > project > > > > version?, click > > > > > > here<http://maven.40175.n5.nabble.com/template/NamlServlet.jtp?macro=un > > > > > > subscribe_by_code&node=5543110&code=c2V0aGNhbGxAZ21haWwuY29tfDU1NDMxMTB > > > 8LTU5NTg4MjI5Nw==> > > > > . > > > > > > > > > > NAML<http://maven.40175.n5.nabble.com/template/NamlServlet.jtp?macro=ma > > > > > > cro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.names > > > paces.BasicNamespace-nabble.view.web.template.NabbleNamespace- > > > > > > nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%2 > > > > > 1nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml- > > > send_instant_email%21nabble%3Aemail.naml> > > > > > > > > > > > > > -- > > > View this message in context: http://maven.40175.n5.nabble.com/Is- > it- > > > possible-to-tie-current-git-branch-to-project-version- > > > tp5543110p5544417.html > > > Sent from the Maven - Users mailing list archive at Nabble.com. > > > > > ______________________________________________________________________ > > This message, including any attachments, is confidential and contains > > information intended only for the person(s) named above. Any other > > distribution, copying or disclosure is strictly prohibited. If you > are not > > the intended recipient or have received this message in error, please > > notify us immediately by reply email and permanently delete the > original > > transmission from all of your systems and hard drives, including any > > attachments, without making a copy. > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [hidden > email]<http://user/SendEmail.jtp?type=node&node=5544568&i=3> > > For additional commands, e-mail: [hidden > email]<http://user/SendEmail.jtp?type=node&node=5544568&i=4> > > > > > > > > ------------------------------ > > If you reply to this email, your message will be added to the > discussion > > below: > > > > http://maven.40175.n5.nabble.com/Is-it-possible-to-tie-current-git- > branch-to-project-version-tp5543110p5544568.html > > To unsubscribe from Is it possible to tie current git branch to > project > > version?, click > here<http://maven.40175.n5.nabble.com/template/NamlServlet.jtp?macro=un > subscribe_by_code&node=5543110&code=c2V0aGNhbGxAZ21haWwuY29tfDU1NDMxMTB > 8LTU5NTg4MjI5Nw==> > > . > > > NAML<http://maven.40175.n5.nabble.com/template/NamlServlet.jtp?macro=ma > cro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.names > paces.BasicNamespace-nabble.view.web.template.NabbleNamespace- > nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%2 > 1nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml- > send_instant_email%21nabble%3Aemail.naml> > > > > > -- > View this message in context: http://maven.40175.n5.nabble.com/Is-it- > possible-to-tie-current-git-branch-to-project-version- > tp5543110p5545345.html > Sent from the Maven - Users mailing list archive at Nabble.com. ______________________________________________________________________ This message, including any attachments, is confidential and contains information intended only for the person(s) named above. Any other distribution, copying or disclosure is strictly prohibited. If you are not the intended recipient or have received this message in error, please notify us immediately by reply email and permanently delete the original transmission from all of your systems and hard drives, including any attachments, without making a copy. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
