Return-Path: Delivered-To: apmail-maven-continuum-users-archive@www.apache.org Received: (qmail 58419 invoked from network); 18 Jul 2007 08:33:27 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 18 Jul 2007 08:33:27 -0000 Received: (qmail 74102 invoked by uid 500); 18 Jul 2007 08:33:18 -0000 Delivered-To: apmail-maven-continuum-users-archive@maven.apache.org Received: (qmail 74090 invoked by uid 500); 18 Jul 2007 08:33:18 -0000 Mailing-List: contact continuum-users-help@maven.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: continuum-users@maven.apache.org Delivered-To: mailing list continuum-users@maven.apache.org Received: (qmail 74075 invoked by uid 99); 18 Jul 2007 08:33:18 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Jul 2007 01:33:18 -0700 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (herse.apache.org: domain of jesse.mcconnell@gmail.com designates 64.233.184.231 as permitted sender) Received: from [64.233.184.231] (HELO wr-out-0506.google.com) (64.233.184.231) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Jul 2007 01:33:14 -0700 Received: by wr-out-0506.google.com with SMTP id i30so94788wra for ; Wed, 18 Jul 2007 01:32:53 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=urvCBG6ptPrzc+lFAfZM3+13sK1Pzj3Bwr4g1vtU2twM/E2j49temyJIGlAJ6Iqupw3XxcB50LT3hfeSlpsP6gQiWtTUVCBX0kkUm6lt3IeT1Mtulm9J5yxwoVYWDVCQt2JUztSD8gptNROCBNAoWXrQEgQDAISSnoYItEE2dy0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=AYV6jkjBk4ei/oJS+eAGlvwA3LwgRN9U6Q9a76esJAv2c4TEb727ySJyhWk5y9ouM2BB09FSKVbjEcmjl/P0K3z1cTz3KSGWdnyguG+cOW0j7sEWMX/JKuMsoNtwlIlF2BNdDhIpwS2ZIEMEzQSGmnE66UtyG+lrz/oE7y6m094= Received: by 10.142.90.8 with SMTP id n8mr98792wfb.1184747572583; Wed, 18 Jul 2007 01:32:52 -0700 (PDT) Received: by 10.143.10.10 with HTTP; Wed, 18 Jul 2007 01:32:52 -0700 (PDT) Message-ID: Date: Wed, 18 Jul 2007 16:32:52 +0800 From: "Jesse McConnell" To: continuum-users@maven.apache.org Subject: Re: Maven2 release process in Continuum In-Reply-To: <23fce8e60707180054o4c00f086w4bb4cbd57671db94@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <23fce8e60707170359l3fd0b4b3x934ddb85d8bc0fd9@mail.gmail.com> <23fce8e60707180054o4c00f086w4bb4cbd57671db94@mail.gmail.com> X-Virus-Checked: Checked by ClamAV on apache.org if you have one company pom... and 17 projects to release....and those 17 projects each use a snapshot version of the company pom.. you currently need to checkout all 17 poms, edit the parent pom to a released version and check them in. you have to do that using hte maven-release-plugin and you have to do that for continuum release as well. if you have one company pom, and a project with 17 submodules (and this subprojects have no snapshot versions that are not in those 17/18 modules being released) then you only need to update the one parent project pom to resolve the company pom to a released version and the release process will take care of resolving all internal snapshot version to the (soon to be released) version. does that help? On 7/18/07, James Abley wrote: > On 18/07/07, Jesse McConnell 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 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.(DefaultVersionInfo.java:156) > > > at org.apache.maven.continuum.web.action.ReleasePrepareAction.setProperties(ReleasePrepareAction.java:294) > > > at org.apache.maven.continuum.web.action.ReleasePrepareAction.processProject(ReleasePrepareAction.java:273) > > > at org.apache.maven.continuum.web.action.ReleasePrepareAction.processProject(ReleasePrepareAction.java:277) > > > at org.apache.maven.continuum.web.action.ReleasePrepareAction.input(ReleasePrepareAction.java:119) > > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > > at java.lang.reflect.Method.invoke(Method.java:585) > > > at com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:364) > > > at com.opensymphony.xwork.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:216) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190) > > > at com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:88) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:88) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at org.apache.maven.continuum.web.interceptor.ForceContinuumConfigurationInterceptor.intercept(ForceContinuumConfigurationInterceptor.java:73) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at org.codehaus.plexus.redback.xwork.interceptor.PolicyEnforcementInterceptor.intercept(PolicyEnforcementInterceptor.java:103) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at org.codehaus.plexus.redback.xwork.interceptor.SecureActionInterceptor.intercept(SecureActionInterceptor.java:178) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at org.codehaus.plexus.xwork.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:58) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:88) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:88) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at com.opensymphony.webwork.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:171) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at com.opensymphony.webwork.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:147) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at com.opensymphony.xwork.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:151) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:186) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at org.codehaus.plexus.redback.xwork.interceptor.AutoLoginInterceptor.intercept(AutoLoginInterceptor.java:156) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at org.codehaus.plexus.redback.xwork.interceptor.ForceAdminUserInterceptor.intercept(ForceAdminUserInterceptor.java:63) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at org.codehaus.plexus.redback.xwork.interceptor.EnvironmentCheckInterceptor.intercept(EnvironmentCheckInterceptor.java:122) > > > at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188) > > > at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:113) > > > at com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:225) > > > at com.opensymphony.webwork.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:202) > > > at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821) > > > at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118) > > > at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52) > > > at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821) > > > at com.opensymphony.webwork.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:88) > > > at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821) > > > at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.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(WebApplicationContext.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. > > > > > > > > > ${pom.groupId} > > > sampleapp-core > > > ${project.parent.version} > > > > > > > > > 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 > > jesse.mcconnell@gmail.com > > > -- jesse mcconnell jesse.mcconnell@gmail.com