jeudi 29 novembre 2007

Java et X11

Il n'y a pas à dire, développer sous un véritable OS change beaucoup de choses.
On a remarqué récemment sous Windows nos collègues mettaient plus de deux fois plus de temps à construire le projet que sous Linux; Et encore je ne parle pas des problèmes d'anti-virus quand on n'est pas administrateur du poste.
Mais hélas parfois notre petit pingouin pose des soucis spécifiques notamment avec X11.
Voici donc une petite astuce lorsque l'on se trouve avec l'erreur suivante:

Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified
Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.


Il ne suffit pas de définir la variable d'environnement DISPLAY mais aussi autoriser les connexions au serveur X grâce à a commande magique suivante :

xhost +localhost +LOCAL:all

mardi 20 novembre 2007

Working at a Distance is hard

Après avoir vécu un projet où la moitié de l'équipe était de l'autre coté de l'hexagone, je pense aussi que Travailler à Distance est difficile.

Si on pouvait mettre facilement en place un environnement à base d'OpenCroquet, je pourrais enfin arrêter de rebooter sous un OS primitif pour ouvrir une session netmeeting et voir une démo :o(.

The F5 Key Is Not a Build Process

Tout est dans le titre : The F5 Key Is Not a Build Process..

Je n'ai pas de meilleurs mots;)

Je vais changer de poste pour rejoindre un éditeur et j'espère bien pouvoir mettre en place un vrai processus de build ainsi que des méthodologies agiles. D'ailleurs à ce propos je conseille les deux blogs suivants :

mardi 11 septembre 2007

Aggrégation de Javadoc sous Maven2

Message fort intéressant sur comment aggreger simplement la javadoc sous Maven2 en utilisant les options de javadoc : 



Following some recent post about javadoc aggregation, I tried to play with javadoc attachments and dependency unpacking with some success and it was quite easy. Here are the poms:

  • For project exporting javadoc:


  • <?xml version="1.0"?><project>
    <parent>
    <artifactId>merging-javadoc</artifactId>
    <groupId>oqube.maven</groupId>
    <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <groupId>oqube.maven.javadoc</groupId>
    <artifactId>project1</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
    <plugins>
    <plugin>
    <artifactId>maven-javadoc-plugin</artifactId>
    <executions>
    <execution>
    <id>attach-javadocs</id>
    <goals>
    <goal>jar</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
    </plugins>
    </build>
    </project>


  • For project importing javadoc:



  • <?xml version="1.0"?><project>
    <parent>
    <artifactId>merging-javadoc</artifactId>
    <groupId>oqube.maven</groupId>
    <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <groupId>oqube.maven.javadoc</groupId>
    <artifactId>aggregate</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
    <execution>
    <id>unpack</id>
    <phase>package</phase>
    <goals>
    <goal>unpack</goal>
    </goals>
    <configuration>
    <artifactItems>
    <artifactItem>
    <groupId>oqube.maven.javadoc</groupId>
    <artifactId>project1</artifactId>
    <version>1.0-SNAPSHOT</version>
    <type>jar</type>
    <classifier>javadoc</classifier>
    <overWrite>true</overWrite>
    <outputDirectory>
    ${project.build.directory}/site/project1-docs/
    </outputDirectory>
    </artifactItem>
    <artifactItem>
    <groupId>oqube.maven.javadoc</groupId>
    <artifactId>project2</artifactId>
    <version>1.0-SNAPSHOT</version>
    <classifier>javadoc</classifier>
    <type>jar</type>
    <overWrite>true</overWrite>
    <outputDirectory>
    ${project.build.directory}/site/project2-docs/
    </outputDirectory>
    </artifactItem>
    </artifactItems>
    <outputDirectory>
    ${project.build.directory}/site/project2-docs/
    </outputDirectory>

    </configuration>
    </execution>
    </executions>
    </plugin>
    </plugins>
    </build>
    </project>

  • It is then just a matter of adding links on site.xml:


  • <?xml version="1.0" encoding="ISO-8859-1"?>
    <project name="Javadoc aggregation test">
    <publishDate position="bottom" format="dd-MM-yyyy"/>
    <body>
    <menu name="API Documentation">
    <item name="Project1" href="/project1-docs/index.html"/>
    <item name="Project2" href="/project2-docs/index.html"/>
    </menu>
    </body>
    </project>


Of course, this is not **true** aggregation, but it works fine. One could achieve true aggregation using similar technique but with:

  • exporting sources

  • unpackgin source files and tweaking javadoc plugin to use these as inputs