Just a side note: it is about maven 4 where deployed poms will not be dev pom so tooling, static analyzis tools etc will follow since we will anyway - otherwise mvn 4 and all xsd discussions are pointless.
Verbosity is a common feedback - with easiness to do in project custom lifecycle so IMHO we must tackle that in mvn 4 or stay on mvn 3. Le sam. 12 déc. 2020 à 14:03, Tamás Cservenák <ta...@cservenak.net> a écrit : > Agree with Robert here: this issue is really about "hard to author/write > POMs as they are chatty". > > Then use polyglot, and let's Maven itself (or Maven + polyglot) sort out > things, but modding POM modello is something not we'd like to do... (as > many others noted, existing tooling etc). > > My 5 cents. > > T > > On Sat, Dec 12, 2020 at 12:53 PM Robert Scholte <rfscho...@apache.org> > wrote: > > > Here's my unpopular response: I'm not going to invest in attribute > support > > for Maven. > > If the verbosity of the pom.xml is the first thing people complain about, > > well, then Maven is doing a pretty good job (if the build itself had > > issues, one would complain about that first, right?). > > By having elements only it is much easier to maintain Maven. > > It'll remove discussion as to: what would be an attribute and what should > > be an element? Can it be based on required versus optional? Allowing both > > for the same "fields" is probably a recipe for disaster. > > > > I'll leave it up to tools like polyglot to do some the transformation > from > > your favorite language to the XML as expected by Maven. > > This is a clear separation, and it will give the Maven team the > > opportunity to focus on the real issues. > > > > So please join your forces and spend your energy on improving polyglot! > > > > thanks, > > Robert > > On 12-12-2020 11:04:33, Markus KARG <mar...@headcrashing.eu> wrote: > > Wouldn't it be a more modern and even more effective approach to add JSON > > support for POMs? We could keep POM.xml for legacy reasons but add > support > > for POM.json files. > > -Markus > > > > -----Ursprüngliche Nachricht----- > > Von: Will Iverson [mailto:wiver...@gmail.com] > > Gesendet: Freitag, 11. Dezember 2020 23:40 > > An: dev@maven.apache.org > > Betreff: [DISCUSS] Allow attributes shorthand in pom.xml > > > > One of the biggest complaints about Maven has long been the verbosity of > > the XML format. The verbosity is due in large part to the exclusive > > reliance on XML elements in Maven. > > > > Proposal: Allow Maven pom.xml to treat attributes as a short-hand for > > declaring configuration elements. > > > > Example: One of the most verbose sections of the pom for most projects is > > dependencies. A typical example: > > > > > > commons-io > > commons-io > > 2.8.0 > > > > > > Here is the same declaration expressed with attribute shortcuts: > > > > > > That's an 80% reduction in LoC, and would make Maven comparable with > other > > popular build tools (e.g. compare and contrast with other build tools at > > https://mvnrepository.com/artifact/commons-io/commons-io/2.8.0) > > > > REQUEST: Feedback on if this is something to pursue. I've done some > > research, happy to submit patches, but don't want to pursue if there is > > either a) technical reason[s] not to proceed I'm not aware of or b) a > lack > > of enthusiasm for the entire idea from the community. > > > > Basically, I'm looking for some feedback along the lines of a) love it - > > please submit patches so we can check it out, b) huh, maybe, willing to > > look at it, or c) this is a terrible idea, because X. Effectively, a > > totally non-binding vote on if this is worth exploring. > > > > I've discussed this with others online and done some research, so are a > few > > answers to objections/Qs as I currently understand. I may be > > wrong/uninformed about certain aspects, which would be very helpful > > feedback. > > > > Q: Won't this require a new Maven XSD to be generated? > > A: No. The current Maven XSD declares many elements, but is not actually > > involved in validation. While the current XSD is valuable for tools and > > documentation, it does not actually perform validation. > > > > Q: Wait, so what actually does the validation? > > A: It's all done in Java code generated by Modello. The maven-model > project > > (https://github.com/apache/maven/tree/maven-3.6.3/maven-model) relies on > > the Modello Maven Plugin ( > > http://codehaus-plexus.github.io/modello/modello-maven-plugin/) which in > > turn relies on Modello core (http://codehaus-plexus.github.io/modello/) > to > > generate the Java code that processes the pom.xml > > > > The proposal is to submit a patch for Modello that would allow the > > generated source to accept an attribute as an alias for input. If it's a > > valid element per the Maven maven.mdo file ( > > > > > https://github.com/apache/maven/blob/maven-3.6.3/maven-model/src/main/mdo/maven.mdo > > ) > > it will now accept an attribute as a shortcut. > > > > Q: Wouldn't this break, like, everything? > > A: It would only affect pom.xml files that are read at runtime. All > emitted > > pom.xml files would remain exactly the same. > > > > Q: Does this involve changing or rewriting the user's pom.xml? Isn't that > > the thing that's making it hard to support alternative formats for > pom.xml > > like polyglot poms, etc? > > A: Nope, the pom.xml on disk is still the pom.xml. A > > X.X.X would be the only flag > > recommended to declare that a pom.xml uses attributes for shorthand. > > > > Q: How much work is this to actually implement? > > A: It starts with a few lines added to the Modello code generation to > allow > > for attribute aliasing with a feature flag. Testing those changes through > > the rest of the dependency chain. Adding test cases throughout. > > Documentation. although as "now you can use attributes" is conceptually > > simple it's not too bad. Tools in the Maven ecosystem would be able to > > indicate they have been updated to support this by referring to the > simple > > term, "attribute shortcuts". Because nothing else changes, the only real > > documentation change would be "things that were elements can also be > > declared as attributes." The trickiest part is probably sorting out how > to > > manage the feature flag across the various components. I'm sure there's > > more with a huge ecosystem like this, but the actual changes to the > Modello > > code gen appear to be surprisingly minor. > > > > Q: What about tooling, like IDEs, publishing to Maven Central & Maven > > repositories, etc? > > A: Many IDEs appear to have implemented validation logic on top of Maven > > that currently will flag attributes as errors in a pom.xml. Those IDEs > and > > other tools would require updates to this validation logic. Because the > > rendered pom.xml output remains the same publishing tool chains and Maven > > repositories should be completely unaffected. > > > > Q: Any big issues you've identified? > > A: Many sub-elements are not actually processed by Modello or Maven > Model, > > but are instead passed along to the plugin. For example, > > elements. It would be up to each of these projects to eventually allow > for > > attribute aliasing (or not). Maven projects that rely on Modello would > have > > the choice to adopt the new version and turn on the feature flag (or > not). > > It's possible that this would be confusing for some users - i.e. "why > can I > > declare dependencies with attributes but not configuration values"? That > > said, I think it's manageable and would allow the ecosystem to slowly > > update. > > Q: Shouldn't we wait for Maven 5 to tackle this? > > A: There's an issue going back to 2008 about the verbosity of pom.xml - > > https://issues.apache.org/jira/browse/MNG-3397 - so... that's 12 years. > > While writing this email, I just realized I commented on that issue back > in > > 2014. Any proposal to dramatically change the pom is going to be a *huge* > > effort and is not at all what I'm proposing. This is literally the > simplest > > possible change I can think of that accomplishes the goal (dramatically > > reducing the verbosity of the pom.xml) with the least possible impact to > > the ecosystem. It's been twelve years. Maven 5 is years away. > > > > I know there is a voting system for changes to Maven, and this would be a > > huge userland change. If there is even a soft exploratory "yes" I'm happy > > to submit patches. Even better would be the assistance of an existing > Maven > > committer willing to help me navigate Apache requirements. If the > feedback > > is generally negative, that's fine too - I'll just go ahead and close the > > issue. What I don't want to do is submit patches and then have everyone > > yell at me. The Internet can be rough, you know. :) > > > > I know this is a long email - thanks for reading, and looking forward to > > feedback. > > > > Thanks, > > -Will > > > > P.S. I've been tracking my research on this approach with this issue > > https://issues.apache.org/jira/browse/MNG-7044, in case you are curious > > about the research/additional links. > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org > > For additional commands, e-mail: dev-h...@maven.apache.org > > > > >