You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Maarten Mulders (Jira)" <ji...@apache.org> on 2020/12/01 06:42:00 UTC

[jira] [Commented] (MNG-7044) Allow use of attributes in Maven pom.xml

    [ https://issues.apache.org/jira/browse/MNG-7044?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17241299#comment-17241299 ] 

Maarten Mulders commented on MNG-7044:
--------------------------------------

I'm sorry for the early closure. Indeed I should've double-checked if it was the same proposal or not. I don't hold a strong opinion in favour of or against this idea, it's just me being too lazy and not checking. Again, please apologise.

You can find the Modello model in [Maven Core|https://github.com/apache/maven], under [maven-model/src/main/mdo|https://github.com/apache/maven/tree/master/maven-model/src/main/mdo]. I am not familiar with how it works or how it transforms into Java code, so I'm afraid I won't be of much help in that part. I do know some parts of Maven from my recent work on Maven, just not these parts.

As far as I understand, with the new build/consumer feature that will ship in Maven 4, it will be possible to deploy a different POM than the one that is used to build the project. Maybe that would provide the foundation for what you're suggesting - rewriting those attributes into the more verbose element-based structure so all tools that support Model version 4 will be able to understand. But again, I'm not sure about this, we would need to investigate.

> Allow use of attributes in Maven pom.xml
> ----------------------------------------
>
>                 Key: MNG-7044
>                 URL: https://issues.apache.org/jira/browse/MNG-7044
>             Project: Maven
>          Issue Type: New Feature
>          Components: core, POM
>            Reporter: Will Iverson
>            Priority: Minor
>              Labels: features
>
> Proposal: The current pom.xml file is very verbose due to the exclusive use of XML elements. This makes even simple declarations such as dependencies unnecessarily verbose.
> I would propose that a future version of Maven allow for the use of attributes as an alternative declaration for pom.xml configuration. This would only affect how Maven ingests project files - for consistency and backward compatibility all generated pom.xml files would continue to be element based.
> Projects that declared a conflicting/duplicate attribute/element pairing would be considered to be malformed, and would result in a built break.
> By way of example of the benefit of this proposal, this declaration would be reduced from:
> <dependency>
>      <groupId>commons-cli</groupId>
>      <artifactId>commons-cli</artifactId>
>      <version>1.4</version>
> </dependency>
> ...to...
> <dependency groupId="commons-cli" artifactId="commons-cli" version="1.4" />
> This would allow many Maven projects to *dramatically* decrease the total line count, which is one of the frequent criticisms of Maven compared with other build tools.
> If there is interest, I would be happy to help support this. My hope/expectation is that the changes required to support this in Maven itself would be quite minor - simply adding a bit of additional logic to look for attributes in the XML parse and error reporting in the event of a duplication (as well as supporting test cases). That said, I don't want to send in patches for a change like this that would be dead on arrival.
> This would, of course, represent a potentially large impact on the user and tooling space (in particular, IDEs that integrate Maven support). As the emitted files for resolved pom.xml files (those that are published in repos) would remain the same, hopefully the overall impacts would be manageable.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)