giovedì 19 marzo 2015

Configurazioni dei build più compatte con Maven Polyglot

Una delle critiche che si sente più spesso su Maven è che l'XML è molto verboso.
Con Maven Polyglot potete scrivere questo:
project {
  modelVersion '4.0.0'    
  groupId 'io.takari.polyglot'
  artifactId 'groovy-project'
  version '0.0.1-SNAPSHOT'
  //
  // Possibly a more preferrable way to generate the groupId,
  // artifactId, and version elements:
  //
  // $artifact('io.takari.polyglot:groovy-project:0.0.1-SNAPSHOT')
  //
  name 'Groovy Maven Love'
      
  build {
    //
    // Arbitrary Groovy code can be executed in any phase in the form of a dynamic plugin
    //
    $execute(id: 'hello', phase: 'validate') {
      println ""
      println "Hello! I am Groovy inside Maven. What? What am I doing here?? I'm confused. I guess we are friends now. Maybe."
      println ""
    }           
  }
}
Dovete avere Java 1.7 e Maven 3.3.1.
Per farlo funzionare, dovete creare una cartella .mvn e metterci dentro un file extensions.xml con scritto dentro (nel caso di Groovy):

<?xml version="1.0" encoding="UTF-8"?>
<extensions>
  <extension>
    <groupId>io.takari.polyglot</groupId>
    <artifactId>polyglot-groovy</artifactId>
    <version>0.1.5</version>
  </extension>
</extensions>

Il motivo per il quale è importante che Maven diventi poliglotta è che ci sono un sacco di plugin per Maven ed estensioni di strumenti di terze parti.
C'è anche la possibilità di usare YAML, Atom, Scala ed altri linguaggi.

Tra le alernative a Maven ci sono:
  • Apache Ivy, dependency management per ANT
  • Grape, dell'ecosistema Groovy
  • Gradle
  • Apache Buildr
  • Typesafe SBT
  • Leiningen per Clojure

Scriveteci cosa ne pensate nei commenti qua sotto.