[gatein-dev] Build update
Nick Scavelli
nscavell at redhat.com
Thu Mar 29 14:49:14 EDT 2012
On 03/28/2012 09:43 AM, Boleslaw Dawidowicz wrote:
> We are not really dev friendly anyway because you first need to read
> README to setup settings.xml... Something I personally don't really
> get either but anyway :)
And even more so with this change.
>
> Our main problem with -Prelease profile so far is that it was
> constantly behind. Thing is that we were using this approach so far
> and each time I forgot to grep version after "mvn release:prepare" I
> pushed somehow messed up tag. In most cases when people do changes in
> the build they simply forget to update release profile. If we keep
> like this then doing release is repeating painful process as first you
> spend whole day putting the build back into a decent state...
>
> Ken I agree with you that in theory -Prelease should be a better
> approach. In practice it just didn't work in our case.
>
> Bolek
>
> On Mar 26, 2012, at 6:59 PM, Ken Finnigan wrote:
>
>> When I stated it, I was thinking along the lines of them wanting to
>> develop on GateIn, but also use that which they developed, which
>> would require local changes to be in their Maven repo.
>>
>> if someone has downloaded the GateIn bundle, played with it, and
>> decided that they want to take a look at the code. That first time
>> they want to download and build source, they don't necessarily want
>> or care about it being packaged into a server. They just want to
>> make sure it builds and pulls in dependencies so that looking at the
>> code in an IDE makes sense and doesn't have red marks everywhere with
>> thousands of errors.
>>
>> If it's desired to build a server env along with source, I would
>> suggest building a single server by default, such as AS7, and then
>> allowing the developer to choose to build a different server if they
>> want.
>>
>> Ken
>>
>> On Mon, Mar 26, 2012 at 12:50 PM, Julien Viet <julien at julienviet.com
>> <mailto:julien at julienviet.com>> wrote:
>>
>> you said "but at least the codebase built and is available in
>> their Maven repo"
>>
>> if I need a jar in my repo, it's because I'm using it. If I need
>> log4j for instance, I don't build it, I add a dependency, it's
>> simpler.
>>
>> what is the point of building only jars and not server ?
>>
>>
>>
>>
>>
>> On Mar 26, 2012, at 6:41 PM, Ken Finnigan wrote:
>>
>>> Hmm. I may be mistaken, but when would making a mistake not
>>> potentially, or likely, break things? To me this is solving a
>>> problem that can be solved with documentation.
>>>
>>> Are you saying that you don't build the GateIn packaging modules
>>> at all? You only download the released artifacts from a Maven repo?
>>>
>>> Ken
>>>
>>> On Mon, Mar 26, 2012 at 12:24 PM, Julien Viet
>>> <julien at julienviet.com <mailto:julien at julienviet.com>> wrote:
>>>
>>> as I said the issue is that doing a mistake breaks things,
>>> not that it is hard or complex to add an argument on the
>>> command line.
>>>
>>> That being said my opinion is that if I need a jar in my
>>> repo then I add a dependency in my pom to get those jars and
>>> maven will fetch them from me. It will be faster than having
>>> to wait 20 minutes to build the same jars.
>>>
>>> On Mar 26, 2012, at 6:02 PM, Ken Finnigan wrote:
>>>
>>>> ok, but isn't that what documentation is for, to document
>>>> the release process with whatever parameters are needed?
>>>>
>>>> I'd hardly consider -Prelease to be extremely onerous on a
>>>> releaser.
>>>>
>>>> I guess from a different perspective, it's not a very
>>>> pleasant experience for a community member to attempt to
>>>> build GateIn and end up waiting forever for it to complete
>>>> because, like everyone else, they didn't read the readme
>>>> before trying to build a project.
>>>>
>>>> In my opinion, if someone needs to read a readme before
>>>> they even attempt to build a Maven project, something is
>>>> very wrong. Yes it means they don't have a packaged GateIn
>>>> with a server environment built, but at least the codebase
>>>> built and is available in their Maven repo.
>>>>
>>>> Ken
>>>>
>>>> On Mon, Mar 26, 2012 at 11:53 AM, Julien Viet
>>>> <julien at julienviet.com <mailto:julien at julienviet.com>> wrote:
>>>>
>>>> the issue we had in the past was about forgetting
>>>> profile or not knowing exactly which profiles should be
>>>> activated when doing release.
>>>>
>>>> On Mar 26, 2012, at 5:47 PM, Ken Finnigan wrote:
>>>>
>>>>> Julien,
>>>>>
>>>>> I think what you're describing is different to what I
>>>>> meant.
>>>>>
>>>>> I don't mean doing some profile as part of the release
>>>>> plugin, I mean creating a new release profile that has
>>>>> nothing but the modules to build, no plugins or
>>>>> anything else defined within it. Then as part of the
>>>>> release you only need to add -Prelease to build every
>>>>> module
>>>>>
>>>>> Might be missing something, but to me it's different.
>>>>>
>>>>> Ken
>>>>>
>>>>> On Mon, Mar 26, 2012 at 11:25 AM, Julien Viet
>>>>> <julien at julienviet.com <mailto:julien at julienviet.com>>
>>>>> wrote:
>>>>>
>>>>> Hi Ken,
>>>>>
>>>>> The additional profile added in the release plugin
>>>>> will not be run in the project until the release
>>>>> plugin fork itself (i.e the release plugin runs
>>>>> another maven during the release).
>>>>>
>>>>> To perform a correct and reproducible release all
>>>>> profiles should be executed from the beginning
>>>>> with all the profiles that will update the pom.
>>>>>
>>>>> We had issues in the past with some releases (with
>>>>> gatein and portlet container, I don't know for
>>>>> others) where the release was not done correctly
>>>>> (the main issue is that poms were not versioned
>>>>> during the release which makes a broken release
>>>>> and also breaks the trunk/master because there are
>>>>> pom using the previous release SNAPSHOT
>>>>> version). Those releases had to be redone or
>>>>> worse the SVN tag was "amended" (which is not
>>>>> possible anymore with git) to "fix" the release.
>>>>>
>>>>> The main motivation is to ensure that the release
>>>>> will be easy to do, will be correct and that the
>>>>> build after the release is correct.
>>>>>
>>>>> On Mar 26, 2012, at 5:08 PM, Ken Finnigan wrote:
>>>>>
>>>>>> Why not simply have a "release" profile that
>>>>>> activates each module of the build?
>>>>>>
>>>>>> That is usually what Maven projects do when there
>>>>>> are modules they don't want built during dev,
>>>>>> such as docs, etc.
>>>>>>
>>>>>> Ken
>>>>>>
>>>>>> On Mon, Mar 26, 2012 at 11:03 AM, Julien Viet
>>>>>> <julien at julienviet.com
>>>>>> <mailto:julien at julienviet.com>> wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> we are currently working on the build after
>>>>>> the GIT migration, one of the current issue
>>>>>> is profile selection.
>>>>>>
>>>>>> The most important issue we are solving is
>>>>>> that performing a release is error prone and
>>>>>> often fails to perform the release properly:
>>>>>> often POM are not versionned by the release
>>>>>> plugin, du to the fact that it uses incorrect
>>>>>> profile activation. Of course it is always
>>>>>> possible to have it working by selecting the
>>>>>> good profiles in the release plugin and on
>>>>>> the command line, however it is error prone
>>>>>> and it is hard to figure out by looking at
>>>>>> the build what should be used.
>>>>>>
>>>>>> We are going to change how the build work
>>>>>> with profiles, not because we don't use
>>>>>> profiles the right way, but because Maven
>>>>>> profile activation is not good enough.
>>>>>> (activeByDefault is broken, you cannot have
>>>>>> flexible activation, etc...)
>>>>>>
>>>>>> We still need to use profiles and actually we
>>>>>> don't change the current profiles, what we do
>>>>>> change is how their activation is done with a
>>>>>> simple and important change: "Everything is
>>>>>> built by default"
>>>>>>
>>>>>> It means that the command "mvn install"
>>>>>> builds everything (all server packaging,
>>>>>> docs, examples, etc...). This guarantees that
>>>>>> release plugin will release properly the
>>>>>> project. Obviously we need to address
>>>>>> developer productivity and we do provide a
>>>>>> way to perform a build that saves the most
>>>>>> time we can when it is activated in a simple
>>>>>> manner.
>>>>>>
>>>>>> To achieve it we use profile activation based
>>>>>> on properties: the gatein.dev property is
>>>>>> introduced to do it.
>>>>>>
>>>>>> When this property is not present, the build
>>>>>> behaves as said before : it builds everthing.
>>>>>>
>>>>>> When it is selected with any value, it means
>>>>>> that the build is done for development
>>>>>> purpose and it skips some parts of the build
>>>>>> (examples, docs, most of packaging).
>>>>>>
>>>>>> When it is selected with a server value, it
>>>>>> build that server only : for instance "mvn
>>>>>> install -Dgatein.dev=jetty" . The possible
>>>>>> values are
>>>>>>
>>>>>> - tomcat
>>>>>> - jbossas5
>>>>>> - jbossas6
>>>>>> - jbossas
>>>>>> - tomcat6
>>>>>> - tomcat7
>>>>>> - jetty
>>>>>>
>>>>>> Another issue to fix is the selected database
>>>>>> for running the unit tests, but I believe it
>>>>>> affects you less because most of you are
>>>>>> using hsqldb tests. To perform tests with
>>>>>> MySQL, the profile -Pmysql5 can be used.
>>>>>>
>>>>>> Several things to note:
>>>>>>
>>>>>> - The README file of GateIn has been updated
>>>>>> with the information
>>>>>> - AS7 build is not yet finished and is cut of
>>>>>> the build (which means that doing a release
>>>>>> would not version the AS7 poms)
>>>>>>
>>>>>> Let me know if you have any issue with the build.
>>>>>>
>>>>>> Julien
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> gatein-dev mailing list
>>>>>> gatein-dev at lists.jboss.org
>>>>>> <mailto:gatein-dev at lists.jboss.org>
>>>>>> https://lists.jboss.org/mailman/listinfo/gatein-dev
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> gatein-dev mailing list
>>>>>> gatein-dev at lists.jboss.org
>>>>>> <mailto:gatein-dev at lists.jboss.org>
>>>>>> https://lists.jboss.org/mailman/listinfo/gatein-dev
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>> _______________________________________________
>> gatein-dev mailing list
>> gatein-dev at lists.jboss.org <mailto:gatein-dev at lists.jboss.org>
>> https://lists.jboss.org/mailman/listinfo/gatein-dev
>
>
>
> _______________________________________________
> gatein-dev mailing list
> gatein-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/gatein-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/gatein-dev/attachments/20120329/d2bdfe12/attachment-0001.html
More information about the gatein-dev
mailing list