Archive for Fil à couper le beurre

Hacking Maven

À un niveau de technique, on ne sait plus si ce qu’on fait est utile ou pas. C’est le cas aujourd’hui. Donc cela va parfaitement pour le jinutilitaire.

J’utilise Maven pour organiser mes développements. Pour ces projets, j’utilise plein d’autres projets bibliothèques, des dépendances que j’inscris comme telles dans Maven, dans ce qu’on appelle le pom.xml.

Mais je n’arrive pas à tout faire avec Maven ; pour les déploiements par exemple j’utilise Ant. Il faut que je re-indique alors mes projets bibliothèques. C’est un peu fastidieux.

Il existe (si vous suivez) un autre utilitaire pour indiquer ces dépendances, qui s’appelle Ivy, qui s’associe bien à Maven, mais pour les dependances il faut tout re-écrire C’EST LA BARBE !

J’ai cherché mille choses, posé mille questions sur les forums, rien.

Et j’ai fini par me décider à écrire mon petit utilitaire (cela faisait longtemps), pour transformer automatiquement (ou presque) le jargon maven en jargon ivy, à partir du code source de Maven lui même et son javadoc.

Et l’étonnement m’a pris, cela est quasi-facile !

Voici le programme qui m’affiche les dependencies d’un pom.xml en deux coups de cuillère à pot (quasi mieux que Maven lui même, d’ailleurs) :

package jinutilitaire.lecoinmaven;

import java.io.FileReader;
import java.util.List;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;

public class Coin 
{
    public static void main(String[] args) throws Exception
    {
      MavenXpp3Reader xppread;
      Model model;
      List dependencies;
      
      xppread = new MavenXpp3Reader();
      model = xppread.read(new FileReader("/ici/le/path/pour/le/pom.xml"));
      dependencies = model.getDependencies();
      for (Object o : dependencies)
      {
        Dependency dep;
        
        dep = (Dependency)o;
        System.out.printf(
                "%n", 
                dep.getGroupId(), 
                dep.getArtifactId(),
                dep.getVersion());
      }
    }
}

Hahurissant ! 3 lignes de code ! Dans l’univers d’aujourd’hui c’est exceptionnel ! En plus le code de Maven semble super bien conçu, facile à comprendre, bien qu’il n’y ait pas beaucoup de doc… donc un Bon Point Pour Maven.

Pour que ça marche inclure le $MAVEN_HOME/lib/maven-2.0.9-uber.jar dans le classpath.

Laissez un commentaire

Hello Swing

Il s’agit de faire Hello World en swing. Swing est le paquetage java pour faire des fenêtres, boutons, etc. Ce n’est pas la chose dansante que tout le monde connait.

Pour commencer les trucs inutiles, cela me semble bien indiqué, puisque ce programme est fait depuis belle lurette.

Voici le fil à couper le beurre que je viens d’inventer :
public class HelloWorld
{
public static void main(String[] args) throws Exception
{
EventQueue.invokeAndWait(new java.lang.Runnable()
{
public void run()
{
JFrame frame;

frame = new JFrame();
frame.add(new JLabel(« Hello World »));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}

(qui me permet de découvrir que WordPress ne rend pas comme je voudrais les balises code)

Et voyez ce que cela donne en cliquant ici.

Merveilleux, non ?… Que peut-on faire comme commentaires là dessus ?…

Laissez un commentaire

Hello world!

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

… lorsque l’on crée un blog avec WordPress, le système fournit automatiquement un premier billet intitulé Hello world! – celui que vous lisez en ce moment. Ce Hello world est une pratique très courante, pour enseigner un langage informatique : il est supposé très simple d’afficher un texte à l’écran, et cette simplicité permet à un novice d’écrire un premier programme, et d’apprendre les rudiments d’un langage.

Bien sûr, ce n’est pas forcément simple, où la simplicité cache des fois des choses compliquées, mais dans tous les cas cela permet un premier contact.

Et puis, quel plaisir lorsque l’on aborde un développement que d’arriver à un résultat rapide ! C’est un peu comme le My Tailor Is Rich pour apprendre l’anglais. Il y a un aspect un peu ludique, qui titille la curiosité.

À part cela, Hello World ne sert à rien.

J’aimerais que ce blog soit un peu comme ça : des programmes qui ne servent à rien, un peu amusants, mais qui examinent un aspect particulier de la programmation. Voilà pourquoi j’ai laissé le Hello World de WordPress, ainsi que le premier commentaire, que le système insère automatiquement aussi. À partir de là, on verra ce que les choses deviendront.

Comments (1)