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 > >> > >> >