Hi Kemal, Interesting idea...
Maven4 has something for this ("project repo" that is project-local as opposed to "local repo" that is global). But my discussion is about Maven3 and local repo and remote repo (both are global). Thanks T On Fri, Jun 14, 2024 at 9:29 PM Kemal Soysal < kemal.soy...@ls-it-solutions.de> wrote: > Hi, > > maybe an artifact recorder is in fact the real need here… so if some > module is built, the generated artifacts should be accessible to subsequent > maven executions…. > this way an install would be superfluous and multiple builds could be run > after each other without changing the installed heap. > > Only in case of success the recorded artifacts would be installed and/or > deployed. > > I used this technique to build a huge project and run numerous integration > tests. I would write the extension again, if needed. > We had non standard artifact attachments that forced to write the > extension back then in that project.. > > > > Am 14.06.2024 um 21:20 schrieb Romain Manni-Bucau <rmannibu...@gmail.com > >: > > > > Hi > > > > I'm mixed about it since I have a lot of projects using the fact a > previous > > module was installed in default repo. > > While I can understand the intent I also think both make sense so I don't > > think why we should break existing projects (when there are two values > and > > both are needed I'd priviledge the backward compat one). > > > > Side note: indeed this does not work with split repo but this one has > more > > issues for my cases so this will not be enabled like that so not a topic > > there. > > > > Romain Manni-Bucau > > @rmannibucau <https://twitter.com/rmannibucau> | Blog > > <https://rmannibucau.metawerx.net/> | Old Blog > > <http://rmannibucau.wordpress.com> | Github < > https://github.com/rmannibucau> | > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book > > < > https://www.packtpub.com/application-development/java-ee-8-high-performance > > > > > > > > Le ven. 14 juin 2024 à 21:04, Tamás Cservenák <ta...@cservenak.net> a > > écrit : > > > >> Just to clarify, the "snapshot lock down technique" as explained here: > >> > >> > https://www.mojohaus.org/versions/versions-maven-plugin/examples/lock-snapshots.html > >> > >> It WORKS even today if dependency in question is one artifact. But, it > >> USUALLY becomes impossible, if you depend on some multi module build. > >> > >> Where I extensively use this technique is exactly with Maven and Maven > >> Resolver: I deploy "controlled" builds to ASF "snapshots" and then > "lock it > >> down" in other (usually PR), and enjoy the benefit of full CI coverage > and > >> all (ITs etc) while at same time as sure it is "my change" that is being > >> tested on. > >> > >> Resolver 2.0.0 had quite some changes: > >> * new modules (that started at buildNumber 1) > >> * module renames (transport http -> apache), similarly as above, apache > >> transport was 1, etc > >> > >> Hence, referencing "I want a resolver reactor build that I know exactly > >> comes from this PR/branch/whatever" (for example from a PR) is > impossible, > >> as "lock down" as explained on versions plugin becomes impossible, as > >> modules have different buildNumbers. > >> > >> In this case, I "adjusted" the buildNo (basically ALIGNED them) > >> using MNG-8055 (mvn 3.9.7) [and other tricks before 3.9.7 was out], and > >> then I knew (as ASF CI deployed) which buildNo I really want, and then > >> created Maven PR with that _exact_ TS "locked down" snapshot version, > and > >> was sure CI tested my change and my change only. > >> > >> Thanks > >> T > >> > >> > >> On Fri, Jun 14, 2024 at 8:36 PM Tamás Cservenák <ta...@cservenak.net> > >> wrote: > >> > >>> Howdy, > >>> > >>> If for example sake, we define "maven" as mvn CLI and "build end" as > >> "user > >>> got on console "BUILD SUCCESS/FAILED" output and CLI process exited, > then > >>> at that point, this change would cause ZERO difference for SUCCESS > >> builds. > >>> > >>> Where difference WILL happen, is in case of FAILED builds: nothing will > >> be > >>> installed to local repo and nothing will be deployed to remote repo. > >> Which > >>> is usually what we want, in reality. > >>> > >>> Re install today: > >>> Let's assume that your project first "morning build fails in the > middle" > >>> (at module N+1), hence the first N module ends up installed in your > local > >>> repo, but second M modules (of some multi module build that has N+M > >> modules > >>> in total) are not. When you want to build some other project, that > >> depends > >>> on this project, the installed N JARs will be used that were built now > >>> (this morning) as they are "fresh", just installed, but other M will be > >>> pulled from remote (as last you installed yesterday, before you left > the > >>> office). basically ending with JARs on classpath that may come even > from > >>> different commits (depending what remote JARs, etc). > >>> > >>> Re deploy today: > >>> Similarly, if you have a multi module build (N+M modules) and you > deploy > >>> snapshots as today, and the build fails at module N+1 (CI or dev > >>> workstation, does not matter), after fixing the thing, and redeploy, > all > >> is > >>> seemingly ok. But what happens is that due the first failure, the > first N > >>> modules will have "build number" in their timestamped version +1 offset > >>> from those last M modules (basically as first N modules were deployed > >>> twice, while last M modules only once). Hence, if you would like to > "lock > >>> down" or address whole reactor artifacts built together with a given TS > >>> snapshot number, you cannot. But the same happens in the following > >>> scenario: you have a multi module build of N modules, but this morning > >> you > >>> add one new module, hence you have N+1 modules. And you (or CI) deploy. > >> The > >>> "new" module will have buildNumber 1 (as it was deployed the first > time), > >>> while all the others may have 50 or even 100. Again, you cannot address > >>> (and be sure) you use all the artifacts that were built "together". > >>> -SNAPSHOT versions are "moving targets", and kinda helps alleviate > this, > >>> but they still can suffer from spurious problems, like explained at the > >>> beginning: if you depend on -SNAPSHOT version and your commit in > question > >>> introduced binary incompatibility between modules, your build may fail > >> (as > >>> -SNAPSHOT will use first N modules with change, but "older" pre-commit > M > >>> modules without change). Etc. > >>> > >>> In short: > >>> - in case of SUCCESS builds, at the moment CLI exits, the user > >>> experiences NO difference (everything is installed and/or deployed just > >>> like before) > >>> - in case of FAILED builds, the user can be sure no "partial" installs > or > >>> deploys happened. This case is less important, as we tend to "fix" the > >>> failed builds anyway. Rinse and repeat. > >>> > >>> Thanks > >>> T > >>> > >>> On Fri, Jun 14, 2024 at 8:04 PM Maarten Mulders <mthmuld...@apache.org > > > >>> wrote: > >>> > >>>> Would flipping the defaults make this a backward incompatible change? > If > >>>> users are not aware of this change, it will change their build/deploy > in > >>>> a significant way... > >>>> > >>>> > >>>> Maarten > >>>> > >>>> On 14/06/2024 19:49, Tamás Cservenák wrote: > >>>>> Howdy > >>>>> > >>>>> Yes, Martin is right: am talking about the two plugin *AtEnd > >> parameters, > >>>>> and only about flipping their defaults. > >>>>> > >>>>> T > >>>>> > >>>>> On Fri, Jun 14, 2024, 18:29 Gary Gregory <garydgreg...@gmail.com> > >>>> wrote: > >>>>> > >>>>>> Hi all, > >>>>>> > >>>>>> Install by default locally is probably OK for devs, especially for > >>>>>> multi-module projects, but deploy by default is a bad IMO: I often > >>>> work in > >>>>>> one repo and install, then switch to another repo and test the new > >>>> snapshot > >>>>>> jars. Round and round until my changes are fully baked. This usually > >>>> means > >>>>>> having 2 Eclipse instances open at the same time, we have some > >> projects > >>>>>> with lots of modules. Deploying by default adds time and inflicts my > >>>> work > >>>>>> in progress on everyone else. I'm sure I'd turn that off. > >>>>>> > >>>>>> I would turn off both for sure in GitHub CI builds, so hopefully > that > >>>> can > >>>>>> be turned off on the command line so I don't have to make my POMs > >> even > >>>> more > >>>>>> complicated ;-) > >>>>>> > >>>>>> An otherwise happy Maven user giving up > >>>>>> 2c, > >>>>>> Gary > >>>>>> > >>>>>> On Fri, Jun 14, 2024, 12:15 PM Tamás Cservenák <ta...@cservenak.net > > > >>>>>> wrote: > >>>>>> > >>>>>>> Howdy, > >>>>>>> > >>>>>>> As history proved, the original "interleaved" install/deploy is > just > >>>> call > >>>>>>> for problems, and causes in need for circumventions like > >>>>>>> https://issues.apache.org/jira/browse/MNG-8054 to make classic > >>>> "snapshot > >>>>>>> TS > >>>>>>> lock-down" possible on large(r) projects. Also, no wonder our users > >>>> were > >>>>>>> asking for this feature for a quite long time. > >>>>>>> > >>>>>>> Hence, I'd propose that in upcoming releases (ie 3.2.0 of them), in > >>>>>> plugins > >>>>>>> m-install-p and m-deploy-p simply "flip" the defaults: and make > them > >>>>>>> install/deploy At End by default, while keeping the ability to > >>>> "reverse" > >>>>>> if > >>>>>>> someone really depends on per-module deploys. > >>>>>>> > >>>>>>> WDYT? > >>>>>>> > >>>>>>> Thanks > >>>>>>> T > >>>>>>> > >>>>>> > >>>>> > >>>> > >>>> --------------------------------------------------------------------- > >>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org > >>>> For additional commands, e-mail: dev-h...@maven.apache.org > >>>> > >>>> > >> > > GF Kemal Soysal > > __________________________ > Kemal Soysal > LS IT-Solutions GmbH > kemal.soy...@ls-it-solutions.de > Mobil: +49 1512 404 55 66 > Thomas-Mann-Str.21 > 44141 Dortmund > >