top | item 35373458

(no title)

mburee | 2 years ago

Could you share some examples? Genuinely interested as I really only know those god awful and huge Maven configs as things one would mostly edit by hand

discuss

order

lenkite|2 years ago

Maven is an excellent example where the original author forgot that XML attributes exist. Or rather he chose to use a use a terrible parser than didn't support them. And overly verbose names.

With a nice XSD, the below could be typed with full autocomplete and tab-next-placeholder support for element and attribute names in both neovim/vscode/ intellij.

    <proj name="My Biz CLI" url="http://github.com/mybiz/mybizctl" modelVersion="4.0.0">  
      <coord groupId="com.mybiz" artifactId="mybizctl" version="1.0.0" packaging="jar" />
       OR
      <coord>com.mybiz:mybizctl:jar:1.0.0</coord> <!-- alt form -->
      <deps>  
        <dep groupId="junit" artifactId="junit" version="5.0.1" scope="test" />  
        <dep>info.picocli:picocli:4.7.1</dep>  <!-- alt form -->
      </deps>  
    </proj>
The above declares a project CLI tool with proj metadata and a defined coordinate producing a jar file with 1 compile time dependency and 1 test dependency.

eadmund|2 years ago

The S-expression version looks so much more pleasant:

    (proj (name "My Biz CLI")
          (url "http://github.com/mybiz/mybizctl")
          (model-version "4.0.0")
          (group-id com.mybiz)
          (artifact-id mybizctl)
          (version "1.0.0")
          (packaging jar)
          (deps
           (dep (group-id junit)
                (artifact-id junit)
                (version "5.0.1")
                (scope test))))

mcculley|2 years ago

Maven is not a great example of the strengths of XML, as another comment describes.

I use XML a lot in favor of JSON because I can pass around a machine readable schema (yes, I know JSON now has some schema support) and because I can represent things like cycles and comments and numbers that are something other than 64-bit floating point values.