build1 and build 2 are different modules or different mvn invocations with some 
time inbetween?

Of course we will need to test all plugins to behave incremental like! Means 
the maven-shade-plugin should check itself whether it needs shading or not at 
all.

But the worst thing happening would be that we compile too much. Thats still 
better than a full mvn clean install :)

LieGrue,
strub



----- Original Message -----
> From: Benson Margulies <bimargul...@gmail.com>
> To: Maven Developers List <dev@maven.apache.org>; Mark Struberg 
> <strub...@yahoo.de>
> Cc: 
> Sent: Monday, August 27, 2012 5:07 PM
> Subject: Re: improving incremental builds
> 
> On Mon, Aug 27, 2012 at 8:40 AM, Mark Struberg <strub...@yahoo.de> wrote:
>>  We might implement this by storing the list of all activated profiles + all 
> resolved environment properties in a file in target/ somewhere.
>>  That would be part of a.) in my previous mail to Romain.
> 
> How about the situation with shade?
> 
> Build 1 runs shade and it replaces the primary build artifact with a shaded 
> one.
> 
> Build 2 sees that nothing has changed, but shade doesn't know, and it
> reshades, eating its own output with a ton of messages.
> 
> Can I fix this in shade with current technologies?
> 
> 
> 
>> 
>>  LieGrue,
>>  strub
>> 
>> 
>> 
>>  ----- Original Message -----
>>>  From: Anders Hammar <and...@hammar.net>
>>>  To: Maven Developers List <dev@maven.apache.org>; Mark Struberg 
> <strub...@yahoo.de>
>>>  Cc:
>>>  Sent: Monday, August 27, 2012 12:24 PM
>>>  Subject: Re: improving incremental builds
>>> 
>>>>   +0 for auto detecting changed scenarios. If someone changes a 
> profile or
>>>  the whole pom, then I'd expect he invokes a clean manually.  We 
> have to
>>>  document this expectation of course.
>>> 
>>>  What do others think of this? I'm thinking it would be awesome (but
>>>  maybe difficult) if plugins could determine if its configuration has
>>>  changed, and then handle this automatically. If there are to many
>>>  cases where a manual clean build is required, I believe people will
>>>  continue to do "mvn clean install" (which I see all the time 
> with
>>>  developers), which I think is what we try to get away from.
>>> 
>>>  /Anders
>>> 
>>>> 
>>>>   LieGrue,
>>>>   strub
>>>> 
>>>> 
>>>> 
>>>> 
>>>>   ----- Original Message -----
>>>>>   From: Anders Hammar <and...@hammar.net>
>>>>>   To: Maven Developers List <dev@maven.apache.org>
>>>>>   Cc:
>>>>>   Sent: Monday, August 27, 2012 9:57 AM
>>>>>   Subject: Re: improving incremental builds
>>>>> 
>>>>>>    I already started tweaking the m-compiler-plugin and 
> found quite
>>>  scary
>>>>>   issues. There is e.g. MCOMPILER-21 (open since 2005) which 
> prevents
>>>  incremental
>>>>>   build and would kick in in your scenario.
>>>>> 
>>>>>   This is interesting. I've looked a bit at Mojo's JAXB 
> plugin in
>>>  the
>>>>>   context of detecting stale generated files (i.e. need to 
> re-generate)
>>>>>   and it's similar to this. It would extremely nice if there 
> would be
>>>  a
>>>>>   common "framework" for handling incremental builds.
>>>>>   In addition to what's been mentioned in the jira (I just 
> browsed it
>>>>>   quickly), we have cases when includes/excludes change, the 
> sourceDir
>>>>>   changes, etc which should trigger cleanup and re-compilation.
>>>>> 
>>>>>   /Anders
>>>>> 
>>>>>> 
>>>>>>    I talked about 2 scenarios
>>>>>> 
>>>>>>    a.) all phases >= package, e.g. mvn verify, mvn 
> install, ...
>>>  Here we
>>>>>   have an artifact on the disc and could test for the md5 of 
> them, right?
>>>>>> 
>>>>>>    b.) all phases < package. This is e.g. mvn compile or 
> mvn test.
>>>  In that
>>>>>   case we don't produce a jar/war/ear/... artifact but only 
> get the
>>>  files on
>>>>>   the disk linked in MavenProject#getProjectArtifacts()... 
> file(). This
>>>  is the
>>>>>   case where the maven-compiler-plugin kicks in. I'm 
> currently in the
>>>  process
>>>>>   of rewriting big parts of it, mainly I introduced
>>>>>>      b.1 a check for project.artifacts/project.testArtifacts 
> .file()
>>>  is a
>>>>>   local file path .isDirectory() and has files which are newer 
> (actually
>>>>  =)
>>>>>   than the buildStarted timestamp.
>>>>>>      b.2 check whether there are any *.java (sourceincludes) 
> files
>>>  which are
>>>>>   newer than their class files.
>>>>>> 
>>>>>>    In both cases I now force a FULL recompile of the module!
>>>  Compiling only
>>>>>   parts produced classes which are actually broken!
>>>>>> 
>>>>>> 
>>>>>>    My approach is the following: compiling a bit too much is 
> better
>>>  than
>>>>>   missing some files which need compilation. Because the later 
> is exactly
>>>  the
>>>>>   reason why noone uses mvn compile but always do a mvn clean 
> compile
>>>  nowadays. If
>>>>>   mvn compile is reliable, then we will end up being much faster 
> than an
>>>>>   unconditional full compile on the whole project!
>>>>>> 
>>>>>> 
>>>>>>    LieGrue,
>>>>>>    strub
>>>>>> 
>>>>>> 
>>>>>>    PS: We need to move all our plugins which still use the
>>>>>   plugin-testing-harness to the maven-invoker-plugin as the 
> test-harness
>>>  is broken
>>>>>   with sisu. (sisu changed the 'container' field from 
> plexus
>>>  original:
>>>>>   protected to 'private')
>>>>>> 
>>>>>>    PPS: how do we maintain the plexus-compiler-utils stuff? 
> This
>>>  contains some
>>>>>   weirdo bugs which should get fixed...
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>    ----- Original Message -----
>>>>>>>    From: Olivier Lamy <ol...@apache.org>
>>>>>>>    To: Maven Developers List 
> <dev@maven.apache.org>; Mark
>>>  Struberg
>>>>>   <strub...@yahoo.de>
>>>>>>>    Cc:
>>>>>>>    Sent: Monday, August 27, 2012 9:13 AM
>>>>>>>    Subject: Re: improving incremental builds
>>>>>>> 
>>>>>>>    Hi,
>>>>>>>    Sounds good idea trying to improve that.
>>>>>>>    My question: on what is based the md5 calculation ?
>>>>>>>    If people don't use 'install' but only
>>>  'test'
>>>>>   (perso I use
>>>>>>>    that to
>>>>>>>    avoid too much io with jar creation etc..), so in 
> such case we
>>>  cannot
>>>>>>>    do md5 calculation on the produced artifact.
>>>>>>> 
>>>>>>>    2012/8/26 Mark Struberg <strub...@yahoo.de>:
>>>>>>>>     Hi David!
>>>>>>>> 
>>>>>>>>>     So your idea is to find the list of changed 
> modules
>>>  and
>>>>>>>>>     then build that list with -amd?
>>>>>>>>     Yes, kind of.
>>>>>>>> 
>>>>>>>>     At the moment mvn -amd builds the dependents of 
> the
>>>  _current_
>>>>>   module. If
>>>>>>>    you use my example and change BeanA.java, then run 
> mvn -amd
>>>  from the
>>>>>   root module
>>>>>>>    you will see that only moduleA gets rebuild and 
> moduleB
>>>  remains
>>>>>   original.
>>>>>>>    Because moduleB is not a dependent of the root 
> module.
>>>>>>>> 
>>>>>>>>     But yes, I'm completely with you that we 
> have most of
>>>  the
>>>>>   ingredients
>>>>>>>    in the maven codebase already. At least for the start 
> we could
>>>  easily
>>>>>   detect
>>>>>>>    changed build results and add those to the 
> 'amd' list.
>>>  That
>>>>>   would
>>>>>>>    already be much better than what we have today imo. 
> And this
>>>  should be
>>>>>   pretty
>>>>>>>    easy to implement.
>>>>>>>> 
>>>>>>>>     Indeed, what I proposed goes a bit beyond -amd. 
> I would
>>>  not only
>>>>>   check the
>>>>>>>    current build tree like -amd does (even if that would 
> be a
>>>  good start)
>>>>>   but
>>>>>>>    remember the md5 of all the dependencies of each 
> module
>>>  (simply store
>>>>>   them in a
>>>>>>>    file in ./target/) And if you find a dependency which 
> is not
>>>  in the
>>>>>   list (e.g.
>>>>>>>    after upgrade from one version to another) or has a 
> different
>>>  md5 (this
>>>>>   covers
>>>>>>>    SNAPSHOT versions) , then we could force a full 
> rebuild (mvn
>>>  -amd) of
>>>>>   this
>>>>>>>    module.
>>>>>>>> 
>>>>>>>> 
>>>>>>>>     LieGrue,
>>>>>>>>     strub
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>>     ----- Original Message -----
>>>>>>>>>     From: David Jencks 
> <david_jen...@yahoo.com>
>>>>>>>>>     To: Maven Developers List
>>>  <dev@maven.apache.org>
>>>>>>>>>     Cc:
>>>>>>>>>     Sent: Sunday, August 26, 2012 8:34 AM
>>>>>>>>>     Subject: Re: improving incremental builds
>>>>>>>>> 
>>>>>>>>>     Is what you want different from what
>>>>>>>>> 
>>>>>>>>>     mvn -amd moduleA
>>>>>>>>> 
>>>>>>>>>     does?  So your idea is to find the list of 
> changed
>>>  modules and
>>>>>   then
>>>>>>>    build that
>>>>>>>>>     list with -amd?
>>>>>>>>> 
>>>>>>>>>     thanks
>>>>>>>>>     david jencks
>>>>>>>>> 
>>>>>>>>>     On Aug 25, 2012, at 1:32 PM, Mark Struberg 
> wrote:
>>>>>>>>> 
>>>>>>>>>>      Hi folks!
>>>>>>>>>> 
>>>>>>>>>>      After a short discussion with Kristian, 
> I've
>>>  created
>>>>>   a small
>>>>>>>    app with 2
>>>>>>>>>     modules which shows a few problems with 
> mavens
>>>  incremental
>>>>>   build logic.
>>>>>>>>>>      And since incremental builds do not 
> work well,
>>>  people use
>>>>>>>>>> 
>>>>>>>>>>      $> mvn _clean_ install
>>>>>>>>>>      all the time.
>>>>>>>>>> 
>>>>>>>>>>      We could speed up the development 
> effort heavily
>>>  if we
>>>>>   make
>>>>>>>>>>      $> mvn  install
>>>>>>>>>>      (without an upfront clean) more 
> reliable.
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>      The sample [1] consists of moduleA and 
> moduleB
>>>  with BeanA
>>>>>   and
>>>>>>>    BeanB
>>>>>>>>>     respectively.
>>>>>>>>>>      BeanB has a private BeanA field and 
> moduleB has
>>>  a
>>>>>   dependency on
>>>>>>>    moduleA.
>>>>>>>>>> 
>>>>>>>>>>      If I change BeanA and just invoke mvn 
> install
>>>  then only
>>>>>   moduleA
>>>>>>>    gets
>>>>>>>>>     rebuilt. We currently do not rebuild 
> moduleB, but we
>>>  should do
>>>>>   to
>>>>>>>    create a
>>>>>>>>>     reliable output.
>>>>>>>>>> 
>>>>>>>>>>      In fact, the incremental build within a 
> single
>>>  module
>>>>>   already
>>>>>>>    works to some
>>>>>>>>>     degrees, but we must detect a change in 
> dependencies
>>>  and
>>>>>   trigger a full
>>>>>>>    rebuild
>>>>>>>>>     on all depending modules. This could be done 
> by
>>>  storing the
>>>>>   md5 of all
>>>>>>>>>     dependency artifacts and compare them on the 
> next
>>>  build. If
>>>>>   the md5 of
>>>>>>>    a
>>>>>>>>>     dependency did change, then we need to build 
> the
>>>  module full
>>>>>   cycle.
>>>>>>>>>>      Other ideas are welcome. Slaps as well 
> if I
>>>  forgot some
>>>>>   obvious
>>>>>>>    stuff and
>>>>>>>>>     all works well already.
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>      LieGrue,
>>>>>>>>>>      strub
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>> 
>>>  ---------------------------------------------------------------------
>>>>>>>>>>      To unsubscribe, e-mail:
>>>  dev-unsubscr...@maven.apache.org
>>>>>>>>>>      For additional commands, e-mail:
>>>>>   dev-h...@maven.apache.org
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>   
> ---------------------------------------------------------------------
>>>>>>>>>     To unsubscribe, e-mail:
>>>  dev-unsubscr...@maven.apache.org
>>>>>>>>>     For additional commands, e-mail:
>>>  dev-h...@maven.apache.org
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>   
> ---------------------------------------------------------------------
>>>>>>>>     To unsubscribe, e-mail: 
> dev-unsubscr...@maven.apache.org
>>>>>>>>     For additional commands, e-mail:
>>>  dev-h...@maven.apache.org
>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>>    --
>>>>>>>    Olivier Lamy
>>>>>>>    Talend: http://coders.talend.com
>>>>>>>   http://twitter.com/olamy | 
> http://linkedin.com/in/olamy
>>>>>>> 
>>>>>> 
>>>>>> 
>>>  ---------------------------------------------------------------------
>>>>>>    To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>>>>>>    For additional commands, e-mail: 
> dev-h...@maven.apache.org
>>>>>> 
>>>>> 
>>>>>   
> ---------------------------------------------------------------------
>>>>>   To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>>>>>   For additional commands, e-mail: dev-h...@maven.apache.org
>>>>> 
>>>> 
>>>>   
> ---------------------------------------------------------------------
>>>>   To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>>>>   For additional commands, e-mail: dev-h...@maven.apache.org
>>>> 
>>> 
>>>  ---------------------------------------------------------------------
>>>  To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>>>  For additional commands, e-mail: dev-h...@maven.apache.org
>>> 
>> 
>>  ---------------------------------------------------------------------
>>  To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>>  For additional commands, e-mail: dev-h...@maven.apache.org
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to