Robert, Point is that without using in memory pom model, produced pom will always require rework to be properly consumed. We must avoid it I think and do what you said: read pom -> extend it -> make it immutable (optional for me) -> dump *this* model. This is what makes a consumable feature otherwise it is just a static pom rewriting without advantages of a producer/consumer pattern (nobody cares to put versions to be concrete).
Le mar. 5 janv. 2021 à 13:17, Matthieu Brouillard <matth...@brouillard.fr> a écrit : > > You both keep talking about extensions, but I haven't touched that part. > > I suggest to test current Maven 4 first and to find cases where those > extensions don't work anymore. > I do not know the exact internals of polyglot but for jgitver, in order to > produce a pom-4.0.0.xml compliant file, either: > - delegates to flatten-maven-plugin > - uses an internal mojo > for the production/attachment of a modified pom.xml file dump from the POM. > So in both cases, there is somewhere in the code, some ugly code like: > > File dumpedModel = dumpFromModel(model); > project.setPomFile(dumpedModel) > > In jgitver it is called from a Mojo(1) which in the end dump and update the > model (2) > > I really thought that with 4.0 and the consumer pom this would be obsolete. > > For polyglot, I tried but it does not work with maven-4.0.0, see #224 (3) > > 1: > > https://github.com/jgitver/jgitver-maven-plugin/blob/master/src/main/java/fr/brouillard/oss/jgitver/mojos/JGitverAttachModifiedPomsMojo.java > 2: > > https://github.com/jgitver/jgitver-maven-plugin/blob/master/src/main/java/fr/brouillard/oss/jgitver/JGitverUtils.java#L182 > 3: https://github.com/takari/polyglot-maven/issues/224 > > > On Tue, Jan 5, 2021 at 12:52 PM Robert Scholte <rfscho...@apache.org> > wrote: > > > You both keep talking about extensions, but I haven't touched that part. > > I suggest to test current Maven 4 first and to find cases where those > > extensions don't work anymore. > > Next we can see if this makes sense or not and how to solve it. > > > > Robert > > > > On 5-1-2021 12:28:59, Matthieu Brouillard <matth...@brouillard.fr> > wrote: > > > Currently the model is mutable and this causes issues. > > For me it is not the root cause, it does not help for sure but IMO the > > problem is more that there are currently several sources of trust : the > POM > > & the pom.xml. > > > > Personally (only my opinion) I see no other way for the future of maven > > than to go to a single source of trust: the POM (as in memory model). > > During the build process this POM could (and has to) become immutable for > > sure so that plugins cannot do ugly things anymore but there should be > also > > clear loading and extension mechanisms/hooks before it becomes immutable. > > > > > or do you push to drop extensions support? > > I hope this is not the case. > > > > On Tue, Jan 5, 2021 at 11:58 AM Romain Manni-Bucau > > wrote: > > > > > Hmm, extensions define this kind of lifecycle, at least the > > afterModelRead > > > which is a hook before it could be immutable no? > > > So not sure how it changes the issue, or do you push to drop extensions > > > support? > > > > > > Romain Manni-Bucau > > > @rmannibucau | Blog > > > | Old Blog > > > | Github < > > > https://github.com/rmannibucau> | > > > LinkedIn | Book > > > < > > > > > > https://www.packtpub.com/application-development/java-ee-8-high-performance > > > > > > > > > > > > > Le mar. 5 janv. 2021 à 11:54, Robert Scholte a > > > écrit : > > > > > > > Currently the model is mutable and this causes issues. > > > > Instead I would like to see that once the BuildPlan is finished, the > > > model > > > > becomes immutable. > > > > > > > > > > > > To give a concrete example: It must be possible for code generating > > goals > > > > to add dependencies. > > > > Now, when using modello readers/writers you often need to add a > > required > > > > dependency by hand. > > > > Ideally there will be a hook where a plugin can register additional > > > > dependencies (e.g. dom4j). > > > > > > > > This will make any postprocessing of the pom during build obsolete > > > > > > > > Robert > > > > On 5-1-2021 09:09:11, Matthieu Brouillard > > > wrote: > > > > > Can you give an example? > > > > Like Romain has shown: dynamically added dependencies or a version > > > > computation. > > > > > > > > > Most important is the support for CI-friendly versions > > > > But if extensions dynamically compute and set the versions in the POM > > > using > > > > the API, the changes will not be reflected. > > > > That's why today one has to use flatten-maven-plugin or any other > > > > plugin/task modifying/dumping the POM model to a pom.xml file and > > > > setting/attaching it the POM. > > > > > > > > If the produced artifacts (consumer pom) were computed from the POM > > > (object > > > > model), every change done by any extension would be part of it. > > > > > > > > > but this happens AFTER using the pom > > > > Not always from the pom.xml. I thought extensions were allowed to > > provide > > > > ModelLocator & ModelReader to both decide which file to use for a > > project > > > > and how to build the in memory POM model. > > > > So the truth should not be considered to be in the pom.xml but in the > > > POM. > > > > > > > > > > > > On Mon, Jan 4, 2021 at 10:00 PM Robert Scholte wrote: > > > > > > > > > answers are below. > > > > > > > > > > Robert > > > > > > > > > > On 4-1-2021 16:52:23, Matthieu Brouillard wrote: > > > > > @Robert nothing is broken atm, the changes for consumer/build are > > > > currently > > > > > behind your feature flag. > > > > > Robert Scholte: > > > > > It is active by default, so it is actually not hidden. > > > > > > > > > > > > > > > > > > > > But as I feared previously, and as Romain pointed it, by working at > > XML > > > > > level (and not at POM level) the produced consumer pom does not > > reflect > > > > > changes from extensions. > > > > > Robert Scholte: > > > > > Can you give an example? > > > > > > > > > > > > > > > I really thought that all the "consumer/build" stuff would make the > > > > > maven-flatten-plugin useless but it looks like it will not be the > > case > > > if > > > > > working at XML level. > > > > > Robert Scholte: > > > > > Like with most questions: it depends. Most important is the support > > for > > > > > CI-friendly versions. In this case you won't need the > > > > flatten-maven-plugin > > > > > anymore. > > > > > However, the plugin can rewrite much more, but this happens AFTER > > using > > > > > the pom. > > > > > That's something I don't like, because this POM was not used to > build > > > the > > > > > project, but it was reassembled afterwards. > > > > > My idea is to provide hooks to parts of the pom that might be > > adjusted, > > > > > but this is something we can work on during the 4.x releases > > > > > > > > > > Did Romain and I miss the whole point of the "consumer/build" > > > > enhancements > > > > > or is it "just" because current implementation has not yet reached > > the > > > > > targets/outputs? > > > > > > > > > > On Mon, Jan 4, 2021 at 2:56 PM Romain Manni-Bucau > > > > > wrote: > > > > > > > > > > > Hmm, I don't get a few things of this IT: > > > > > > > > > > > > 1. the formatting seems not expected even if valid (the comments > > are > > > > > > finishing with the first tag for example "--> > > > > > > public class MyListener extends > AbstractMavenLifecycleParticipant { > > > > > > > > > > > > @Override > > > > > > public void afterProjectsRead(final MavenSession session) throws > > > > > > MavenExecutionException { > > > > > > if (session.getCurrentProject() == null) { > > > > > > return; > > > > > > } > > > > > > > > > > > > session.getProjects().forEach(p -> { > > > > > > final Dependency dependency = new Dependency(); > > > > > > dependency.setGroupId("junit"); > > > > > > dependency.setArtifactId("junit"); > > > > > > dependency.setVersion("3.8.1"); > > > > > > p.getDependencies().add(dependency); > > > > > > }); > > > > > > } > > > > > > } > > > > > > > > > > > > > > > > > > 2. If you run mvn (4 snapshot) dependency:tree you get this kind > of > > > > > output: > > > > > > > > > > > > [INFO] ------------- > > > > > > >------------- > > > > > > [INFO] Building Multi Chapter Simple Web Application Project > > > > > > 0.9-MNG6957-SNAPSHOT [6/6] > > > > > > [INFO] --------------------------------[ jar > > > > > > ]--------------------------------- > > > > > > [INFO] > > > > > > [INFO] --- maven-dependency-plugin:3.1.2:tree (default-cli) @ > > > > > simple-webapp > > > > > > --- > > > > > > [INFO] > > > > > org.sonatype.mavenbook.multi:simple-webapp:jar:0.9-MNG6957-SNAPSHOT > > > > > > [INFO] +- > > > > > > > > > > > > > > > > > > > > > > > > > > > org.sonatype.mavenbook.multi:simple-weather:jar:0.9-MNG6957-SNAPSHOT:compile > > > > > > [INFO] \- junit:junit:jar:3.8.1:compile > > > > > > > > > > > > [INFO] > > > > > > > > > > > > ------------------------------------------------------------------------ > > > > > > > > > > > > 3. run the build to have produced pom and cat the simple-webapp > > one: > > > > > > > > > > > > > > > > > > 4.0.0 > > > > > > > > > > > > org.sonatype.mavenbook.multi > > > > > > simple-parent > > > > > > 0.9-MNG6957-SNAPSHOT > > > > > > > > > > > > > > > > > > simple-webapp > > > > > > Multi Chapter Simple Web Application Project > > > > > > > > > > > > > > > > > > org.sonatype.mavenbook.multi > > > > > > simple-weather > > > > > > 0.9-MNG6957-SNAPSHOT > > > > > > > > > > > > > > > > > > > > > > > > simple-webapp > > > > > > > > > > > > > > > > > > > > > > > > org.apache.maven.plugins > > > > > > maven-war-plugin > > > > > > 2.6 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > As you see the dependency is not there. I guess the expected > outout > > > is: > > > > > > > > > > > > > > > > > > > > > > > > 4.0.0 > > > > > > simple-webapp > > > > > > Multi Chapter Simple Web Application Project > > > > > > [description, scm, ..., all central requires sections but not > build > > > > ones] > > > > > > > > > > > > > > > > > > org.sonatype.mavenbook.multi > > > > > > simple-weather > > > > > > 0.9-MNG6957-SNAPSHOT > > > > > > > > > > > > > > > > > > junit > > > > > > junit > > > > > > 3.8.1 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Am I missing something? > > > > > > > > > > > > Romain Manni-Bucau > > > > > > @rmannibucau | Blog > > > > > > | Old Blog > > > > > > | Github > > > > > > https://github.com/rmannibucau> | > > > > > > LinkedIn | Book > > > > > > > > > > > > > > > > > > > > > > > > > > > https://www.packtpub.com/application-development/java-ee-8-high-performance > > > > > > > > > > > > > > > > > > > > > > > > > Le lun. 4 janv. 2021 à 13:41, Robert Scholte a > > > > > > écrit : > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://github.com/apache/maven-integration-testing/tree/master/core-it-suite/src/test/resources/mng-6957-buildconsumer > > > > > > > is the most complete IT > > > > > > > > > > > > > > On 4-1-2021 12:59:51, Romain Manni-Bucau wrote: > > > > > > > Le lun. 4 janv. 2021 à 12:36, Robert Scholte a > > > > > > > écrit : > > > > > > > > > > > > > > > There's just one thing I want to say: > > > > > > > > I'm having trouble with the term "broken". > > > > > > > > > > > > > > > > > > > > > > Well, literally meant broken as decorelated from the user > intent > > > and > > > > > > > extension model. > > > > > > > Anyway, didn't intend to blame but more identify the blockers > > for a > > > > GA > > > > > so > > > > > > > point was really that it seem that on the two sides only the > > > > producing > > > > > > one > > > > > > > is not yet ready since it keeps does not sanitize the model > > > > completely > > > > > > and > > > > > > > keeps build only data like comments, right? Also not yet clear > > for > > > me > > > > > if > > > > > > we > > > > > > > loose the extension enrichments there. > > > > > > > > > > > > > > > > > > > > > > If a Maven project could be built with M3.6.3, it can still > be > > > > built > > > > > > with > > > > > > > > M4. > > > > > > > > If not, it is either regression (MNG-6957, MNG-7063) which > must > > > be > > > > > > fixed, > > > > > > > > or it requires changes to a plugin for understandable reasons > > > > > > > > (maven-pgp-plugin) > > > > > > > > AFAIK an interesting extension like the maven-tiles has been > > > tested > > > > > and > > > > > > > > still works. > > > > > > > > > > > > > > > > > > > > > > Do you have this handy, is it in our test suite? I'd like to > > check > > > > the > > > > > > > produced pom matches the enriched model but happy to start from > > > > > something > > > > > > > already there. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Robert > > > > > > > > > > > > > > > > On 3-1-2021 19:35:25, Romain Manni-Bucau wrote: > > > > > > > > Le dim. 3 janv. 2021 à 19:04, Robert Scholte a > > > > > > > > écrit : > > > > > > > > > > > > > > > > > I don't remember all those details anymore, because I hit > > those > > > > in > > > > > > the > > > > > > > > > beginning. > > > > > > > > > Trying things over and over again I decided that this is > > > probably > > > > > the > > > > > > > > most > > > > > > > > > successful approach. > > > > > > > > > > > > > > > > > > > > > > > > > > > What of the goals was to keep the pom.xml as is as much as > > > > > possible. > > > > > > > > > We can only decide for the specific Maven elements how to > > > handle > > > > > > them, > > > > > > > we > > > > > > > > > should not decide about comments and licenses. > > > > > > > > > BTW, the license issue was hard to solve. You cannot use it > > > from > > > > > the > > > > > > > > pom's > > > > > > > > > , because there might be multiple licenses. > > > > > > > > > > > > > > > > > > > > > > > > > I disagree, it is saner IMO to evolve to support that than > > doing > > > > > > > > anything else. > > > > > > > > Once again you keep things which don't make sense in a > consumed > > > pom > > > > > in > > > > > > > > current impl so i'd say the sucess in a few cases breaks as > > much > > > > > cases > > > > > > so > > > > > > > > we need to revisit anyway IMHO. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > The current implementation is a solid way to ensure we're > not > > > > > > breaking > > > > > > > > too > > > > > > > > > much, because Maven controls the XML filters. > > > > > > > > > > > > > > > > > > > > > > > > > Hmm, breaking extensions seems to break too much (I'm not > > > speaking > > > > of > > > > > > > other > > > > > > > > parts which breaks the ecosystem there but just that is > > > sufficient > > > > > IMHO > > > > > > > to > > > > > > > > say we must check back our solution). > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Also keep in mind, that I only want Maven to decide which > > > > > > modifications > > > > > > > > > are done. > > > > > > > > > > > > > > > > > > > > > > > > > For the consumed pom I agree but it is consistent with > keeping > > > > > > everything > > > > > > > > working instead of breaking too, no? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Current polyglot projects should still work, but they > cannot > > > > > benefit > > > > > > > from > > > > > > > > > the build/consumer functions yet. > > > > > > > > > > > > > > > > > > > > > > > > > So pom -> build model is kept, build model -> produced pom is > > > > broken? > > > > > > Is > > > > > > > it > > > > > > > > the complete status? > > > > > > > > Sounds ok for a 4.0 and a 4.1 can fix it if so. > > > > > > > > Just want to ensure first part is not broken at all. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Robert > > > > > > > > > On 3-1-2021 16:38:38, Romain Manni-Bucau wrote: > > > > > > > > > Le dim. 3 janv. 2021 à 16:18, Robert Scholte a > > > > > > > > > écrit : > > > > > > > > > > > > > > > > > > > > So what I was expecting was: raw xml model -> converted > > to > > > > > > unified > > > > > > > > > > consumed model -> extensions -> model processing. > > > > > > > > > > > > > > > > > > > > This is only the build pom part. You're missing the > consume > > > > part, > > > > > > > where > > > > > > > > > > the xml is distributed. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Yes but with previous chain the consume part is > > > "clean/normalize > > > > -> > > > > > > > dump" > > > > > > > > > since we are using consumed model - only standard model - > in > > > > memory > > > > > > > > > already. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Build is raw + enrich, consumer is raw + enrich + reduce > > > > > (removing > > > > > > > > > > relativePath and modules are the first examples, but much > > > more > > > > is > > > > > > > > > possible) > > > > > > > > > > > > > > > > > > > > Going for the in memory was also my first thought, but I > > > would > > > > > > loose > > > > > > > > > > information, hence I came up with the current > > implementation. > > > > > > > > > > > > > > > > > > > > > > > > > > > > I don't see what you loose ot be honest. > > > > > > > > > You mentionned license but this one is in the pom so not a > > big > > > > > deal, > > > > > > > > > comments which are undesired IMHO as mentionned and element > > > order > > > > > > which > > > > > > > > can > > > > > > > > > really be discussed since we can desire to enforce an order > > to > > > > > > > normalize > > > > > > > > > consumption + it shouldn't be important since from the > > project > > > > > point > > > > > > of > > > > > > > > > view your pom is already "broken"/lost (as all your > > > intelligence > > > > is > > > > > > > lost > > > > > > > > by > > > > > > > > > this "not passthrough" process). > > > > > > > > > So overall I don't see what you would loose from the > consumer > > > > side > > > > > > but > > > > > > > I > > > > > > > > > see what you lost from maven ecosystem side. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Again, we're at a point where we can have counter > > solutions, > > > > but > > > > > > > don't > > > > > > > > > > expect me to implement it. > > > > > > > > > > > > > > > > > > > > > > > > > > > > For now I'm just trying to ensure we agree we don't want to > > > break > > > > > > > > existing > > > > > > > > > extensions and the nice ecosystem we built after years. > > > > > > > > > This was really a move forward and it sounds like we broke > it > > > at > > > > > > maven > > > > > > > 4 > > > > > > > > > without any user gain which sounds terrible. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > thanks, > > > > > > > > > > Robert > > > > > > > > > > On 3-1-2021 15:25:21, Romain Manni-Bucau wrote: > > > > > > > > > > Hi all, > > > > > > > > > > > > > > > > > > > > I kind of join Matthieu thoughts there, there is no point > > to > > > > work > > > > > > at > > > > > > > > xml > > > > > > > > > > level to create the consumed pom - comments is not a > point > > > > since > > > > > it > > > > > > > can > > > > > > > > > > commonly/easily refer to a dropped part of the pom so > they > > > > should > > > > > > be > > > > > > > > > > stripped. > > > > > > > > > > Current extension model got proven adapted and adopted, > > > using a > > > > > > lower > > > > > > > > > level > > > > > > > > > > extension API will not since XML is, even if still > > > mainstream, > > > > > > often > > > > > > > > > > replaced by alternative configurations and to have done > the > > > > work > > > > > to > > > > > > > > > inject > > > > > > > > > > XML configuration programmatically compred to current > > option, > > > > it > > > > > > is a > > > > > > > > > pain. > > > > > > > > > > The in memory model should stick to consumed model IMHO - > > > being > > > > > > > > > > programmatic there is no point to make it easier, worse > > case > > > we > > > > > can > > > > > > > add > > > > > > > > > > helper beans (injectable) but in terms of model it will > not > > > > help. > > > > > > > > > > > > > > > > > > > > So what I was expecting was: > > > > > > > > > > > > > > > > > > > > raw xml model -> converted to unified consumed model -> > > > > > extensions > > > > > > -> > > > > > > > > > model > > > > > > > > > > processing. > > > > > > > > > > > > > > > > > > > > Indeed, real chain adds a small processing over the first > > > arrow > > > > > > > (inject > > > > > > > > > > versions for example) but nothing crazy and breaking this > > > > overall > > > > > > > flow > > > > > > > > > > which stays user friendly. > > > > > > > > > > > > > > > > > > > > Strictly speaking the new model is just a built-in > > extension > > > > for > > > > > me > > > > > > > > which > > > > > > > > > > is particular because it will enforce IDE to integrate a > > new > > > > > > format - > > > > > > > > > > wheres polyglot extensions or others don't require static > > > > > analyzis > > > > > > by > > > > > > > > > > themself not being "standard". > > > > > > > > > > > > > > > > > > > > That said, there is nothing crazy with current > > > implementation, > > > > it > > > > > > > just > > > > > > > > > > require to be updated to be able to take extension > changes > > > into > > > > > > > > account. > > > > > > > > > > This can be done by making the extension model 'spyable' > > (ie > > > > if a > > > > > > > > > > dependency/plugin is added it will be reflected in the > > final > > > > > > written > > > > > > > > > > pom.xml). > > > > > > > > > > This sounds - instrumenting the extension model API or > > doing > > > a > > > > > diff > > > > > > > > after > > > > > > > > > > extension phase - like a compromise and let people gets > the > > > > best > > > > > of > > > > > > > > both > > > > > > > > > > worlds to me. > > > > > > > > > > > > > > > > > > > > Wdyt? > > > > > > > > > > > > > > > > > > > > Romain Manni-Bucau > > > > > > > > > > @rmannibucau | Blog > > > > > > > > > > | Old Blog > > > > > > > > > > | Github | > > > > > > > > > > LinkedIn | Book > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Le dim. 3 janv. 2021 à 14:46, Robert Scholte a > > > > > > > > > > écrit : > > > > > > > > > > > > > > > > > > > > > Hi Matthieu, > > > > > > > > > > > > > > > > > > > > > > As you understand, something had to be changed to move > > > Maven > > > > > > > forward. > > > > > > > > > > > I've decided to pick up that challenge and came up with > > the > > > > > > current > > > > > > > > > > > solution. > > > > > > > > > > > > > > > > > > > > > > My main concerns was that I wanted to keep the > fileModel > > as > > > > > much > > > > > > as > > > > > > > > is. > > > > > > > > > > > That includes the license, comments and element order. > > > > > > > > > > > This information if not available in the memory model, > > so I > > > > > > needed > > > > > > > > the > > > > > > > > > > > original pom file. > > > > > > > > > > > With that in mind, the usage of XMLFilters looks like > the > > > > most > > > > > > > > > > appropriate > > > > > > > > > > > solution. > > > > > > > > > > > > > > > > > > > > > > I am certain that XML is still the most used format, so > > if > > > we > > > > > can > > > > > > > > have > > > > > > > > > > > improvements for those users, I'm already very happy. > > > > > > > > > > > > > > > > > > > > > > And yes, there are plugins that needs to be updated, > but > > > > doing > > > > > > > > nothing > > > > > > > > > is > > > > > > > > > > > not an option anymore. > > > > > > > > > > > > > > > > > > > > > > There are more people that share their concerns, but it > > > took > > > > me > > > > > > > > several > > > > > > > > > > > years to reach this point. > > > > > > > > > > > We now have something that seems to work, anybody who > can > > > > > improve > > > > > > > or > > > > > > > > > can > > > > > > > > > > > come up with an alternative implementation can do so. > > > > > > > > > > > > > > > > > > > > > > thanks, > > > > > > > > > > > Robert > > > > > > > > > > > On 3-1-2021 12:55:41, Matthieu Brouillard wrote: > > > > > > > > > > > Thanks Robert for the video link. > > > > > > > > > > > > > > > > > > > > > > I fully understand the rationales behind the separation > > of > > > > > > > > > > > build/consumer pom and the video provides some insights > > on > > > it > > > > > and > > > > > > > you > > > > > > > > > > > explain the actual implementation to introduce this > > change. > > > > > > > > > > > Still I do not fully understand why it was decided to > > work > > > on > > > > > top > > > > > > > of > > > > > > > > > XML > > > > > > > > > > by > > > > > > > > > > > filtering/enhancing it instead of working at the POM > (in > > > > > > > > > > > memory datamodel) level. > > > > > > > > > > > With the current understanding I have, by doing this > > choice > > > > of > > > > > > > > working > > > > > > > > > at > > > > > > > > > > > XML level, it looks like it was decided to bypass (if > not > > > > kill) > > > > > > > core > > > > > > > > > > > extensions that enhance the POM itself and not the > > pom.xml > > > ; > > > > > > here I > > > > > > > > can > > > > > > > > > > > think of (but probably not limited to): > > > > > > > > > > > - polyglot-maven: do not use XML but other format to > > > describe > > > > > the > > > > > > > POM > > > > > > > > > > > (yaml, json, kotlin, java, other XML formats, ...) > > > > > > > > > > > - jgitver-maven-plugin (or forks like > > > > > > > > maven-git-versioning-extension): > > > > > > > > > > > dynamic computation of projects version based on git > > > history > > > > > > > > > > > > > > > > > > > > > > With the introduction of core extensions, I thought it > > was > > > a > > > > > move > > > > > > > to > > > > > > > > > open > > > > > > > > > > > the internals and let externals contribute to the > > > > capabilities > > > > > of > > > > > > > > > maven. > > > > > > > > > > > With the move to a XML handling chain, I see it as a > > > > > > > > > restriction/regress > > > > > > > > > > in > > > > > > > > > > > favor of core closed functionalities. An example of > that > > is > > > > > what > > > > > > is > > > > > > > > > > > provided as CIFriendly stuff, IMO it could/should have > > been > > > > > > > provided > > > > > > > > > by a > > > > > > > > > > > plugin/extension but instead it is hard written in > maven > > > core > > > > > and > > > > > > > is > > > > > > > > > not > > > > > > > > > > > opened for external contribution (plugin/extension I > > mean). > > > > > > > > > > > > > > > > > > > > > > Perhaps I am totally wrong but I think that maven core > > > should > > > > > > > define > > > > > > > > > all > > > > > > > > > > > its expectations at an API level so that > > extensions/plugins > > > > > could > > > > > > > > hook > > > > > > > > > at > > > > > > > > > > > this API level. The default packaging of maven > > could/should > > > > > > provide > > > > > > > > > > default > > > > > > > > > > > implementations of those expectations (for example > > reading > > > a > > > > > > > pom.xml > > > > > > > > > file > > > > > > > > > > > to a POM model, dumping a POM to a pom-4.0.0.xml, > > > > > > > > > transforming/reducing a > > > > > > > > > > > POM to POM-consumer, dumping POM-consumer to > > > > > > > pom-consumer-5.0.0.xml, > > > > > > > > > ...) > > > > > > > > > > > and let extensions/plugins/default implementations work > > > along > > > > > the > > > > > > > > build > > > > > > > > > > > process with the API & POMs to provide different > features > > > and > > > > > > > > > > capabilities. > > > > > > > > > > > > > > > > > > > > > > Matthieu > > > > > > > > > > > > > > > > > > > > > > On Thu, Dec 31, 2020 at 7:01 PM Robert Scholte wrote: > > > > > > > > > > > > > > > > > > > > > > > I've made a recording[1] about it, which hopefully > > > answers > > > > > most > > > > > > > > > > > questions. > > > > > > > > > > > > > > > > > > > > > > > > Robert > > > > > > > > > > > > > > > > > > > > > > > > [1] https://youtu.be/KDAmlNKZJto > > > > > > > > > > > > > > > > > > > > > > > > On 31-12-2020 16:18:57, Matthieu Brouillard > > > > > > > > > > > > wrote: > > > > > > > > > > > > > Not exactly sure what work you mean > > > > > > > > > > > > everything related to maven-xml: > > > > > Build/ConsumerPomXMLFilterxxx, > > > > > > > > > > > > Build/ConsumerModelSourcexxxx and the transformer > > stuff. > > > > > > > > > > > > Especially, when looking at classes like > > > > > CiFriendlyXMLFilter, I > > > > > > > > would > > > > > > > > > > > have > > > > > > > > > > > > thought that such things could have been done > > elsewhere, > > > > > > working > > > > > > > on > > > > > > > > > the > > > > > > > > > > > > object model (not on the XML stuff) especially for > the > > > > > BuildPom > > > > > > > > part. > > > > > > > > > > > > > > > > > > > > > > > > > however specifically the consumer POM integrates > with > > > so > > > > > many > > > > > > > > > > external > > > > > > > > > > > > ecosystems > > > > > > > > > > > > We're aligned here, this has to be stable and well > > > defined > > > > > by a > > > > > > > > > schema. > > > > > > > > > > > > > > > > > > > > > > > > Matthieu > > > > > > > > > > > > > > > > > > > > > > > > On Thu, Dec 31, 2020 at 3:59 PM Bernd Eckenfels > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > Hello, > > > > > > > > > > > > > > > > > > > > > > > > > > Not exactly sure what work you mean and I fully > agree > > > > that > > > > > > > using > > > > > > > > a > > > > > > > > > > core > > > > > > > > > > > > > model should still be the API for plugins and > > > extensions > > > > to > > > > > > > work > > > > > > > > > > with, > > > > > > > > > > > > > however specifically the consumer POM integrates > with > > > so > > > > > many > > > > > > > > > > external > > > > > > > > > > > > > ecosystems, I would expect it to be defined in > terms > > of > > > > XML > > > > > > > > Schema > > > > > > > > > > with > > > > > > > > > > > > > explicite semantic (and the inherent compatibility > > with > > > > > > exiting > > > > > > > > > > POMs). > > > > > > > > > > > > > > > > > > > > > > > > > > Gruss > > > > > > > > > > > > > Bernd > > > > > > > > > > > > > -- > > > > > > > > > > > > > http://bernd.eckenfels.net > > > > > > > > > > > > > ________________________________ > > > > > > > > > > > > > Von: Matthieu BROUILLARD > > > > > > > > > > > > > Gesendet: Thursday, December 31, 2020 3:19:09 PM > > > > > > > > > > > > > An: dev@maven.apache.org > > > > > > > > > > > > > Betreff: maven 4.0.0 new XML stuff > > > > > > > > > > > > > > > > > > > > > > > > > > Hello all, > > > > > > > > > > > > > > > > > > > > > > > > > > regarding the active work occurring for maven > 4.0.0 I > > > > > noticed > > > > > > > the > > > > > > > > > > > > > introduction of a lot of new stuff around SAX > > parsing & > > > > > > > > filtering. > > > > > > > > > > > > > I am wondering if that means that it was decided > that > > > the > > > > > > input > > > > > > > > > > format > > > > > > > > > > > of > > > > > > > > > > > > > maven projects will be XML forever meaning > probably, > > > > among > > > > > > > > others, > > > > > > > > > > the > > > > > > > > > > > > end > > > > > > > > > > > > > of polyglot extensions. > > > > > > > > > > > > > Could you explain such a move (or point to > > > > > > rationals/documents) > > > > > > > > and > > > > > > > > > > why > > > > > > > > > > > > you > > > > > > > > > > > > > did not leverage working on the in memory object > > model > > > > > > allowing > > > > > > > > > > > > > extensions/plugins to contribute/hook in the chain > of > > > > > > building > > > > > > > > the > > > > > > > > > > > > BuildPOM > > > > > > > > > > > > > & ConsumePOM? In the past I really thought that > this > > > move > > > > > to > > > > > > > > 'Build > > > > > > > > > > vs > > > > > > > > > > > > > Consumer' POM would make clear separations between > > the > > > > > input > > > > > > > > format > > > > > > > > > > of > > > > > > > > > > > > > descriptors and the core system but I perhaps > > > > misunderstood > > > > > > > > things. > > > > > > > > > > > > > > > > > > > > > > > > > > Also, are there plans regarding the future of core > > > > > > extensions? > > > > > > > > > > > > > With core extensions it was possible to hook into > the > > > POM > > > > > > model > > > > > > > > > > loading > > > > > > > > > > > > and > > > > > > > > > > > > > do transformations to do dynamic changes but by > > working > > > > on > > > > > > the > > > > > > > > XML > > > > > > > > > > > > directly > > > > > > > > > > > > > I see a shift (if not red stop) in this > > > > > > contribution/delegation > > > > > > > > > > > > mechanism. > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for your time & answers. > > > > > > > > > > > > > > > > > > > > > > > > > > Matthieu Brouillard > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >