IMO we should strive to make the pom even more verbose... So all us maven folk can keep our jobbies :-P
--jason -----Original Message----- From: Brett Porter <[EMAIL PROTECTED]> Date: Tue, 12 Feb 2008 16:35:35 To:"Maven Developers List" <dev@maven.apache.org> Subject: Re: An Attribute Based POM Yes, I happen to agree with the theory Shane and Jason outlined and is why I accepted the status quo for 5 years :) But I always thought the Maven dependencies tag in Ant looked better and was easier to read. I think the expanded format makes more sense for machine-generated and - read documents. Perhaps XML isn't the right choice in the first place - but it is well tooled and familiar to Java weenies. Maybe one day IDE support will be ubiquitously used and it won't matter, but for now a lot of people look at POMs and edit them in vim and would like them to be simpler. The more important thing is remaining consistent throughout the change IMO. - Brett On 12/02/2008, at 4:22 PM, Don Brown wrote: > Whether an attribute-based design is "proper" is a less important > question than what makes Maven more usable. Form should follow > function. What users care about is more readable POMs, less typing, > and less clutter. I've been really impressed with the Maven team > adopting a more programmatic approach to Maven recently, and this > change will go a long way to making Maven more usable and less > curse-worthy. > > Don > > On 2/12/08, Shane Isbell <[EMAIL PROTECTED]> wrote: >> I know that it is not always clear when to use and attribute and >> when to use >> an element; but typically, attributes are used to attach metadata or >> nonessential information about an element, while subelements are >> essential >> parts of the parent element. To me, the groupId, artifactId and >> version >> would be essential parts of a dependency element. >> >> Shane >> >> On Feb 10, 2008 10:45 PM, Brett Porter <[EMAIL PROTECTED]> wrote: >> >>> Hi, >>> >>> I've always wanted to see an attribute based POM, so based on >>> Nicolas' >>> suggestion I killed some time after waking up early this morning >>> to do >>> it. >>> >>> JIRA: http://jira.codehaus.org/browse/MNG-3397 >>> >>> Here is a build to try: >>> http://people.apache.org/~brett/apache-maven-2.0.9-SNAPSHOT-terse-bin.tar.gz >>> and svn branch: >>> http://svn.apache.org/repos/asf/maven/components/branches/maven-2.0.x-terse >>> >>> Here are two different files for comparison (it halved the size): >>> >>> http://svn.apache.org/viewvc/maven/archiva/trunk/pom.xml?content-type=text%2Fplain&view=co >>> >>> http://svn.apache.org/viewvc/maven/archiva/trunk/pom-4.1.0.xml?content-type=text%2Fplain&view=co >>> >>> What I did is basically convert all the primitive types in the model >>> to attributes. I think more could be done (flattening lists, doing >>> the >>> same for plugin configuration elements), but this gets a big win at >>> least in the dependencies section for minimal work. >>> >>> It should be completely backwards compatible. It detects v4.0.0 and >>> reads it like it used to (then internally converts to the 4.1.0 Java >>> model). >>> >>> Here's some notes on the implementation so far (again, go easy, I >>> just >>> whipped this up today and it's not production ready): >>> - I see this as a stepping stone to the final solution. I've said >>> this >>> before, but I think the POM should separate the build information >>> from >>> the project metadata (particularly that stored in the repository). I >>> think we need to take baby steps towards that though. >>> - this could feasibly be applied to the settings and profile files >>> too. >>> - I switched to StAX in the process. This is likely going to >>> introduce >>> some small quirks we need to iron out (like the hack I added to >>> parse >>> Trygve's name - why did we ever allow that!) I think ideally we'd >>> use >>> the Xpp3Reader for 4.0.0 and the StaxReader for 4.1.0 for best >>> compatibility. This would also fix the problem in that I've just >>> removed the Xpp3Reader and so some plugins may choke. I'm sure the >>> release plugin won't be happy, for example. >>> - There is probably a slight performance overhead in reading v4 POMs >>> since it repopulates the model twice. I haven't measured it but if >>> it's an issue we could optimise the reader/converter. It also adds >>> about 200k to the maven-model JAR. >>> - It is very close to detecting based on namespace so we could >>> enforce >>> the use of that instead. >>> >>> Enjoy! >>> >>> Cheers, >>> Brett >>> >>> -- >>> Brett Porter >>> [EMAIL PROTECTED] >>> http://blogs.exist.com/bporter/ >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > -- Brett Porter [EMAIL PROTECTED] http://blogs.exist.com/bporter/ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]