Hehehe, after thinking about it.. Continuum doesn't need to save state at all(cuz I already assumed at the beginning that all pom must explicitly state it's current version, so the parent pom should also have it's version).
BUT, I wonder whether maven encourages an explicit declaration of version in the pom(just as the above assumption)? Please advise? Also why does it use SNAPSHOT instead of build version..(the letter z in my example)? Thanks > -----Original Message----- > From: Johan Iskandar > Sent: Wednesday, July 18, 2007 4:04 PM > To: continuum-users@maven.apache.org > Subject: RE: Maven2 release process in Continuum > > I dunno how continuum does version releasing but as far as I know about > version releasing is that once you're happy with say build w.x.y.z You > then: (assuming that all pom has its current version explicitly stated > in the file, and it's formatted as p.q.r.s) > -tag all current source &/ pom with an w.x.y tag(branch) > -increment the w &/ x &/ y &/ z for the next build &/ bug-fix &/ > minor-release &/ major-release > > The question is, whether continuum holds such counters for w, x, y and > z(not the current version of the poms cuz it's already explicitly > stated)? if yes where? Can we control the states in case we need some > adjustments? > > So when we trigger one of the release button(there should be 4 buttons > to choose from build, bug-fix, minor-release, major-release) , it should > be obvious for continuum to just increase z if it's a build, increase y > and reset z if it's bug-fix, and the third and fourth should be obvious. > > For automatic builds, it would function just like triggering a build > button, only automatically triggered by a developer committing a source > or by scheduler. > Then in a separate view/form/panel you could choose from a number of > successful builds which one to be the next bug-fix, minor-release, > major-release). (I'd prefer a 0.0.0.0 release as the initial value of > w.x.y.z) > > Best regards, > Johan > Just my 2 cents > > > -----Original Message----- > > From: James Abley [mailto:[EMAIL PROTECTED] > > Sent: Wednesday, July 18, 2007 2:54 PM > > To: continuum-users@maven.apache.org > > Subject: Re: Maven2 release process in Continuum > > > > On 18/07/07, Jesse McConnell <[EMAIL PROTECTED]> wrote: > > > at the moment I think you need to make sure the underlying project > > > that you are going to try and release is 'clean' for the release. > > > that means that all dependencies that you are going to release ave > > > been resolved into released and available artifacts. > > > > Continuum is pulling stuff from our SCM prior to building it; your > > suggestion implies to me that I need to check out POMs, alter them to > > build a release form and check them back in. Then Continuum can be > > used to prepare and perform a release, after which I need to checkout > > the POMs and change any reference versions that I altered to the new > > SNAPSHOT versions. > > > > Have I understood you correctly? It just feels more painful than it > > ought to, when trying to release 17 top-level POMs. Surely other > > people are doing this and can point out where I'm going wrong. > > > > > > > > the continuum release mechanism makes use of the same release > > > mechanism as the maven-release-plugin so if you interested in > playing > > > around with it I am a fan of just using the maven-release-plugin > > > directly, personally. > > > > > > in your example to release your project and the core and webapp > > > subprojects at once, will basically need to release the company pom > > > initially and then edit the project pom by hand and set the company > > > parent pom to the released version. Then check through your > pom.xml's > > > of the project and the two subprojects to locate and resolve any > > > SNAPSHOT dependencies that are not the three you are immediately > > > releasing. > > > > > > its really pretty straight forward once you get into the swing of > it. > > > > Thanks for your response, > > > > James > > > > > > > > jesse > > > > > > On 7/17/07, James Abley <[EMAIL PROTECTED]> wrote: > > > > Hi, > > > > > > > > We have a Continuum instance and would like to cut a release of a > > > > product which uses a Maven2 as the build system. Currently, it > takes > > > > around a day to release a product, which feels like longer than it > > > > should. > > > > > > > > We were hoping that using Continuum would save a lot of time > versus > > > > the current release process, which involves mvn release:prepare > > > > -D..... and mvn releaes:perform -D... for a lot of modules. > > > > > > > > I haven't found much documentation about the release feature, so > would > > > > appreciate any pointers. > > > > > > > > First time through, I just followed it to try to see how intuitive > it > > was. > > > > > > > > Release is only available at a Project Group level (unless the > user > > > > account that I am using is missing some roles?). I created and > > > > selected a small project group, that only contains a parent module > and > > > > two sub-modules. The parent pom inherits from our general > company-wide > > > > POM (common profiles, repositories, scm, etc.) The two sub-module > poms > > > > both inherit from the parent pom, for dependency management > > > > reasons.One sub-module depends on the other one. The dependency > flow > > > > is illustrated below > > > > > > > > Common Company POM > > > > | > > > > V > > > > Project Group POM > > > > | | > > > > V V > > > > Core module POM Web app module (depends on Core) > > > > > > > > > > > > 1) I clicked on Release from the project group page. > > > > 2) Select the prepare release option. > > > > 3) Submit the form. > > > > > > > > org.apache.maven.shared.release.versions.VersionParseException: > Unable > > > > to parse the version string: "${project.parent.version}" > > > > at > > > org.apache.maven.shared.release.versions.DefaultVersionInfo.<init>(Defau > lt > > VersionInfo.java:156) > > > > at > > > org.apache.maven.continuum.web.action.ReleasePrepareAction.setProperties > (R > > eleasePrepareAction.java:294) > > > > at > > > org.apache.maven.continuum.web.action.ReleasePrepareAction.processProjec > t( > > ReleasePrepareAction.java:273) > > > > at > > > org.apache.maven.continuum.web.action.ReleasePrepareAction.processProjec > t( > > ReleasePrepareAction.java:277) > > > > at > > > org.apache.maven.continuum.web.action.ReleasePrepareAction.input(Release > Pr > > epareAction.java:119) > > > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > > > > at > > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav > a: > > 39) > > > > at > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor > Im > > pl.java:25) > > > > at java.lang.reflect.Method.invoke(Method.java:585) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActio > nI > > nvocation.java:364) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invokeActionOnly(DefaultA > ct > > ionInvocation.java:216) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:190) > > > > at > > > com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(Met > ho > > dFilterInterceptor.java:88) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(Met > ho > > dFilterInterceptor.java:88) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > org.apache.maven.continuum.web.interceptor.ForceContinuumConfigurationIn > te > > rceptor.intercept(ForceContinuumConfigurationInterceptor.java:73) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > org.codehaus.plexus.redback.xwork.interceptor.PolicyEnforcementIntercept > or > > .intercept(PolicyEnforcementInterceptor.java:103) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > org.codehaus.plexus.redback.xwork.interceptor.SecureActionInterceptor.in > te > > rcept(SecureActionInterceptor.java:178) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > org.codehaus.plexus.xwork.interceptor.ExceptionMappingInterceptor.interc > ep > > t(ExceptionMappingInterceptor.java:58) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(Met > ho > > dFilterInterceptor.java:88) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(Met > ho > > dFilterInterceptor.java:88) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt > er > > ceptor.java:31) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt > er > > ceptor.java:31) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt > er > > ceptor.java:31) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > com.opensymphony.webwork.interceptor.FileUploadInterceptor.intercept(Fil > eU > > ploadInterceptor.java:171) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt > er > > ceptor.java:31) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > com.opensymphony.webwork.interceptor.debugging.DebuggingInterceptor.inte > rc > > ept(DebuggingInterceptor.java:147) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt > er > > ceptor.java:31) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > com.opensymphony.xwork.interceptor.I18nInterceptor.intercept(I18nInterce > pt > > or.java:151) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt > er > > ceptor.java:31) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt > er > > ceptor.java:31) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt > er > > ceptor.java:31) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor.intercept > (E > > xceptionMappingInterceptor.java:186) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > org.codehaus.plexus.redback.xwork.interceptor.AutoLoginInterceptor.inter > ce > > pt(AutoLoginInterceptor.java:156) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > org.codehaus.plexus.redback.xwork.interceptor.ForceAdminUserInterceptor. > in > > tercept(ForceAdminUserInterceptor.java:63) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > org.codehaus.plexus.redback.xwork.interceptor.EnvironmentCheckIntercepto > r. > > intercept(EnvironmentCheckInterceptor.java:122) > > > > at > > > com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc > at > > ion.java:188) > > > > at > > > com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.jav > a: > > 113) > > > > at > > > com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(Dispat > ch > > erUtils.java:225) > > > > at > > > com.opensymphony.webwork.dispatcher.FilterDispatcher.doFilter(FilterDisp > at > > cher.java:202) > > > > at > > > org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(Web > Ap > > plicationHandler.java:821) > > > > at > > > com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter. > ja > > va:118) > > > > at > > > com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.j > av > > a:52) > > > > at > > > org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(Web > Ap > > plicationHandler.java:821) > > > > at > > > com.opensymphony.webwork.dispatcher.ActionContextCleanUp.doFilter(Action > Co > > ntextCleanUp.java:88) > > > > at > > > org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(Web > Ap > > plicationHandler.java:821) > > > > at > > > org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationH > an > > dler.java:471) > > > > at > > > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568) > > > > at > org.mortbay.http.HttpContext.handle(HttpContext.java:1530) > > > > at > > > org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationCon > te > > xt.java:633) > > > > at > org.mortbay.http.HttpContext.handle(HttpContext.java:1482) > > > > at > org.mortbay.http.HttpServer.service(HttpServer.java:909) > > > > at > > org.mortbay.http.HttpConnection.service(HttpConnection.java:816) > > > > at > > org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:982) > > > > at > > org.mortbay.http.HttpConnection.handle(HttpConnection.java:833) > > > > at > > > org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244 > ) > > > > at > > org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) > > > > at > > org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) > > > > > > > > > > > > The Web App module POM contains a reference to the Core module POM > > like this. > > > > > > > > <dependency> > > > > <groupId>${pom.groupId}</groupId> > > > > <artifactId>sampleapp-core</artifactId> > > > > <version>${project.parent.version}</version> > > > > </dependency> > > > > > > > > So my questions are these: > > > > > > > > 1. Do I have something wrong with the POM setup / dependencies? It > > > > feels like I would hav to checkout the POM and make it reference > an > > > > explicit version, which doesn't feel right. > > > > 2. Is anyone else using the release button that would care to > share > > > > their experiences? > > > > > > > > Cheers, > > > > > > > > James > > > > > > > > > > > > > -- > > > jesse mcconnell > > > [EMAIL PROTECTED] > > > > >