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 :)
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(a)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(a)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(a)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(a)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(a)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(a)lists.jboss.org
>>>>
https://lists.jboss.org/mailman/listinfo/gatein-dev
>>>>
>>>> _______________________________________________
>>>> gatein-dev mailing list
>>>> gatein-dev(a)lists.jboss.org
>>>>
https://lists.jboss.org/mailman/listinfo/gatein-dev
>>>
>>>
>>
>>
>
>
_______________________________________________
gatein-dev mailing list
gatein-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/gatein-dev