Howdy,

Everybody has "quirks", and your project "using the fact a previous module
was installed" is probably an exception.
For example no Maven project expects this (and we have circa 200 of them?).
Anyway, -DdeployAtEnd=false is your friend then (maybe best in
.mvn/maven.config).

Thanks
T

On Fri, Jun 14, 2024 at 9:21 PM Romain Manni-Bucau <rmannibu...@gmail.com>
wrote:

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

Reply via email to