martedì 15 maggio 2012

Esportare le dipendenze di un progetto maven

Per il build dei progetti Java, in particolare per progetti open source con un'ampia comunità di sviluppatori, ci si ritrova spesso a lavorare con il tool Maven.

Maven è un tool di build che utilizza file XML (pom.xml) per la descrizione sia dei passi richiesti per le diverse fasi di build, sia della struttura del progetto in termini di moduli e relative dipendenze (anche verso componenti esterni).

Così un progetto che dipenda, ad esempio, dalla libreria Hibernate, può semplicemente dichiarare tale dipendenza e Maven provvederà in fase di build a recuperare (eventualmente da Internet) il jar di Hibernate e tutte le librerie richieste da Hibernate stesso (effettuando il download quindi di tutte le librerie che costituiscono la chiusura transitiva del grafo delle dipendenze del progetto). Le librerie scaricate da Internet, sono memorizzate in una cache locale dell'utente in modo da essere utilizzate nelle successive fasi di build.

In alcuni casi (ad esempio per importare il progetto in un tool che non supporta Maven) è utile ottenere tutte le librerie necessarie per la build del progetto. Poichè Maven è basato su un sistema a plugin, ed è disponibile uno specifico plugin che effettua proprio questo compito, per ottenere il risultato desiderato è sufficiente una piccola modifica al file pom..xml del progetto.

Nella sezione project/build/plugins si può aggiungere il seguente plug-in di Maven:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.4</version>
    <executions>
      <execution>
        <id>copy-dependencies</id>
        <phase>package</phase>
        <goals>
          <goal>copy-dependencies</goal>
        </goals>
        <configuration>
         <outputDirectory>${project.build.directory}/depLibs</outputDirectory>
         <overWriteReleases>false</overWriteReleases>
         <overWriteSnapshots>true</overWriteSnapshots>
         <excludeTransitive>true</excludeTransitive>
       </configuration>
     </execution>
    </executions>
  </plugin>


La configurazione del plugin descritta sopra è tale eseguire la copia delle librerie durante la fase di pacakge. In questo modo, durante l'esecuzione del comando mvn package oltre al build, Maven provvederà a esportare tutte le librerie da cui il progetto dipende (direttamente e non) nella cartella depList (posizionata nello stesso folder in cui sono prodotti gli artefatti derivanti dal processo di build).

venerdì 11 maggio 2012

IBM Italia licenzia 26 dirigenti Global Business Services

Il Sole 24 Ore comunica che, fonte ANSA, Ibm Italia licenzia, senza preavviso, 26 dirigenti della controllata Global Business Services che fornisce servizi interni di consulenza. I dirigenti hanno un'età media tra i 40 e i 50 anni e sembra rientrino nella fascia di stipendi più alta.

Hostageware: poveri utenti

Hostageware: apps that you have to use because there is no valid or realistic alternative but which are so buggy and such crap that they drive you insane - Kevin Burton

giovedì 10 maggio 2012

Legge del know-how, delle responsabilità e della retribuzione

Internamente alle organizzazioni italiane che operano nel settore ICT, valgono le seguenti proposizioni:

1) la somma del know-how e del livello gerarchico (responsabilità dell'unità organizzativa, del processo ecc) è costante al variare del lavoratore (per quasi tutti i lavoratori);

2) la retribuzione è proporzionale al livello gerarchico.

In formule:

KH + LG = K
R  ~  LG

dove:
  • K è una costante che dipende dalla specifica organizzazione O considerata; il dominio di O è l'insieme delle organizzazioni italiane che operano nel settore ICT;
  • KH, LG e R rappresentano rispettivamente il Know-how,  il Livello Gerarchico e la  retribuzione di L, con L che varia nell'insieme dei lavoratori appartenenti a O.
L'uguaglianza va interpretata come valida quasi ovunque. Sia rispetto a L, sia rispetto a O.