<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3092972573780211636</id><updated>2012-02-16T17:40:17.752+01:00</updated><category term='servlet 3.0'/><category term='sonar'/><category term='jsf 2.0'/><category term='JBoss'/><category term='Barcamp'/><category term='cloud computing'/><category term='Apache projets'/><category term='lifecyle'/><category term='Seam'/><category term='CI'/><category term='Archiva'/><category term='mvnbrowser'/><category term='goal'/><category term='Integration continue'/><category term='Packaging'/><category term='site'/><category term='Gant'/><category term='Ivy'/><category term='Nexus'/><category term='snapshots'/><category term='Gradle'/><category term='plugin'/><category term='Maven'/><category term='Proxy'/><category term='Hudson'/><category term='Plug-in'/><category term='serveur d&apos;intégration'/><category term='jee6'/><category term='eclipse'/><category term='Ant'/><category term='Licences'/><category term='repository'/><category term='comparaison'/><title type='text'>Gregory Boissinot's Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-8780981597991966442</id><published>2009-05-21T21:34:00.002+02:00</published><updated>2009-05-21T21:37:50.777+02:00</updated><title type='text'>Le blog déménage</title><content type='html'>Devant la très grande pauvreté de l’interface d’administration de blogspot et la très grande difficulté de présenter des exemples de code sources, le blog passe sous &lt;a href="http://fr.dotclear.org/"&gt;Dotclear&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Un grand merci à &lt;a href="http://thecodersbreakfast.net/"&gt;Olivier Croisier&lt;/a&gt; qui m’a installé l’ensemble des outils Dotclear et réaliser le design du nouveau blog.&lt;br /&gt;&lt;br /&gt;Désormais, voici donc l’adresse à suivre:&lt;br /&gt;&lt;a href="http://www.boissinot.net"&gt;http://www.boissinot.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-8780981597991966442?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/8780981597991966442/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=8780981597991966442' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/8780981597991966442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/8780981597991966442'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/05/le-blog-demenage.html' title='Le blog déménage'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-4712285838779900093</id><published>2009-04-16T16:17:00.001+02:00</published><updated>2009-04-16T16:20:09.801+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='serveur d&apos;intégration'/><category scheme='http://www.blogger.com/atom/ns#' term='comparaison'/><title type='text'>Comparaison des serveurs d'intégration continue</title><content type='html'>Si vous souhaitez comparer les différents serveurs d'intégration continue, voici deux liens utiles:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix"&gt;http://confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blog.chris-read.net/2008/09/22/continuous-integration-server-comparison-2008/"&gt;http://blog.chris-read.net/2008/09/22/continuous-integration-server-comparison-2008/&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-4712285838779900093?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/4712285838779900093/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=4712285838779900093' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/4712285838779900093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/4712285838779900093'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/04/comparaison-des-serveurs-dintegration.html' title='Comparaison des serveurs d&apos;intégration continue'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-105972672480780393</id><published>2009-04-12T15:05:00.003+02:00</published><updated>2009-04-12T15:10:03.726+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><category scheme='http://www.blogger.com/atom/ns#' term='lifecyle'/><category scheme='http://www.blogger.com/atom/ns#' term='goal'/><title type='text'>Relation entre les cycles de vie Maven et les goals des plugins Maven</title><content type='html'>Pour de  nombreuses personnes, la relation entre les goals des plugins et les cycles de vie Maven est obscure.&lt;br /&gt;Le lien suivant présente une vidéo expliquant la relation entre ces deux notions&lt;br /&gt;&lt;a href="http://javidjamae.com/2009/04/09/screencast-maven-commands-and-lifecycles/"&gt;http://javidjamae.com/2009/04/09/screencast-maven-commands-and-lifecycles/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-105972672480780393?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/105972672480780393/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=105972672480780393' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/105972672480780393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/105972672480780393'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/04/relation-entre-les-cycles-de-vie-maven.html' title='Relation entre les cycles de vie Maven et les goals des plugins Maven'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-3149751206911975128</id><published>2009-03-04T22:22:00.007+01:00</published><updated>2009-03-28T19:41:23.653+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='snapshots'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><category scheme='http://www.blogger.com/atom/ns#' term='repository'/><title type='text'>Changement du repository snapshot de Maven</title><content type='html'>Précédemment, les artifacts snapshots de Maven se trouvaient à cette adresse: &lt;a href="http://people.apache.org/repo/m2-snapshot-repository "&gt;http://people.apache.org/repo/m2-snapshot-repository&lt;/a&gt;. Il est désormais "deprecated".&lt;br /&gt;&lt;br /&gt;Désormais, toutes les nouvelles snapshots Maven seront déployées sur ce nouveau repository: &lt;a href="http://repository.apache.org/snapshots"&gt;http://repository.apache.org/snapshots&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-3149751206911975128?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/3149751206911975128/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=3149751206911975128' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/3149751206911975128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/3149751206911975128'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/03/changement-du-repository-snapshots-de.html' title='Changement du repository snapshot de Maven'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-7819600530219603020</id><published>2009-02-15T22:56:00.005+01:00</published><updated>2009-02-15T23:01:31.800+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><title type='text'>Intégration de Maven dans Eclipse</title><content type='html'>Devant la difficulté de l’intégration de Maven dans Eclipse et les très nombreuses questions sur ce domaine; &lt;a href="http://www.sonatype.com/"&gt;Sonatype&lt;/a&gt; a décidé d’extraire son chapitre consacré à l’intégration du plugin m2eclipse du livre "Maven, The Definitive Guide". Ce chapitre donne naissance a &lt;a href="http://www.sonatype.com/books/m2eclipse-book/reference/"&gt;un livre indépendant&lt;/a&gt; nommé "Developing  with Eclipse and Maven".&lt;br /&gt;&lt;br /&gt;Et voici l’url des trois livres proposés par Sonatype :&lt;br /&gt;&lt;a href="http://www.sonatype.com/documentation/books"&gt;http://www.sonatype.com/documentation/books&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-7819600530219603020?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/7819600530219603020/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=7819600530219603020' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/7819600530219603020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/7819600530219603020'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/02/integration-de-maven-dans-eclipse.html' title='Intégration de Maven dans Eclipse'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-8791407931204841628</id><published>2009-02-09T23:31:00.001+01:00</published><updated>2009-02-09T23:33:44.147+01:00</updated><title type='text'>Sortie de Sonar 1.6</title><content type='html'>Il vient de sortir &lt;a href="http://sonar.codehaus.org/downloads/#1.6"&gt;la version 1.6 de Sonar &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Parmi les nouvelles fonctionnalités:&lt;br /&gt;- possibilité de préciser des seuils&lt;br /&gt;- gestion de profils de qualité et personnalisation par projet&lt;br /&gt;&lt;br /&gt;Il va falloir l'essayer le plus rapidement possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-8791407931204841628?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/8791407931204841628/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=8791407931204841628' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/8791407931204841628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/8791407931204841628'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/02/sortie-de-sonar-16.html' title='Sortie de Sonar 1.6'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-4590552575719709598</id><published>2009-02-08T20:05:00.003+01:00</published><updated>2009-02-08T20:31:16.492+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hudson'/><category scheme='http://www.blogger.com/atom/ns#' term='Gradle'/><title type='text'>Nouvelle version du plugin Gradle de Hudson</title><content type='html'>La version 1.2 du &lt;a href="http://hudson.gotdns.com/wiki/display/HUDSON/Gradle+Plugin"&gt;plugin Gradle&lt;/a&gt; de &lt;a href="https://hudson.dev.java.net/"&gt;Hudson&lt;/a&gt; est sortie ce week-end.&lt;br /&gt;Plus d'informations sur &lt;a href="http://blog.zenika.com/index.php?post/2009/02/08/Le-plugin-Gradle-de-Hudson-s%E2%80%99am%C3%A9liore"&gt;ce billet&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-4590552575719709598?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/4590552575719709598/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=4590552575719709598' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/4590552575719709598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/4590552575719709598'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/02/nouvelle-version-du-plugin-gradle-de.html' title='Nouvelle version du plugin Gradle de Hudson'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-8696341237936147774</id><published>2009-02-06T22:33:00.007+01:00</published><updated>2009-02-07T00:11:24.811+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hudson'/><title type='text'>Résultat d’une étude sur les outils d’intégration continue</title><content type='html'>Voici le &lt;a href="http://appl.fontysvenlo.org/results/2008/GF/index.html"&gt;résultat&lt;/a&gt; d’une étude intéressante sur les différents serveurs de CI. On y apprend notamment que &lt;a href="https://hudson.dev.java.net/"&gt;Hudson&lt;/a&gt; et &lt;a href="http://cruisecontrol.sourceforge.net/"&gt;CruiseControl&lt;/a&gt; sont les deux principaux outils du marché. &lt;br /&gt;Pour le moment, c’est CruiseControl qui est le plus utilisé. Pour les projets déjà sous CI, ils migrent peu à peu vers Hudson ; et pour les projets démarrant des processus d’intégration continue, ils choissent directement Hudson. Il est certain que ce dernier scheduler est très avancé grâce notamment à sa très grande quantité de plugins.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-8696341237936147774?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/8696341237936147774/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=8696341237936147774' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/8696341237936147774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/8696341237936147774'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/02/resultat-dune-etude-sur-les-outils.html' title='Résultat d’une étude sur les outils d’intégration continue'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-5310444648880300360</id><published>2009-02-05T23:33:00.013+01:00</published><updated>2009-02-06T22:32:57.823+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sonar'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><category scheme='http://www.blogger.com/atom/ns#' term='site'/><title type='text'>Faire cohabiter le site Maven et Sonar</title><content type='html'>&lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; est un système de build complet.  Il fournit le cycle de vie « site » pour générer la documentation du projet. Cette documentation contient des informations générales sur le projet comme le triplet GAV(GroupId, ArtifactId,Version), les dépendances, les licences, ... ; ainsi que le résultat de l’exécution des métriques. Le principal inconvénient est d’avoir une documentation purement statique. Par exemple, la documentation contient uniquement une page de résultat par métrique (Checkstyle, PMD, Emma, ...). Ces métriques ne sont donc pas agrégées. De plus, il n’est plus à démontrer que c’est la partie de Maven qui est la moins aboutie du produit en terme de fiabilité.&lt;br /&gt;&lt;br /&gt;Désormais, c’est l’outil &lt;a href="http://sonar.codehaus.org/"&gt;Sonar&lt;/a&gt; qui est très utilisé pour le suivi de la qualité de code des projets informatiques développés en Java. Il s’agit d’une application Web avec une base de donnée,  fournissant une méthode complète pour suivre l’évolution de la qualité de code pendant les phases de développement.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sonar.codehaus.org/maven-site-sonar-or-both-of-them/"&gt;Le billet du blog de Sonar&lt;/a&gt; résume une fois pour toute comment cohabiter le site Maven et l’outil Sonar. &lt;br /&gt;&lt;br /&gt;En conclusion, il faut utiliser le site Maven uniquement pour vos informations générales, puis fournir un lien sur l’url Web de l’instance Sonar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-5310444648880300360?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/5310444648880300360/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=5310444648880300360' title='4 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/5310444648880300360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/5310444648880300360'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/02/cohabiter-le-site-maven-et-sonar.html' title='Faire cohabiter le site Maven et Sonar'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-3251224027099784920</id><published>2009-02-02T22:43:00.002+01:00</published><updated>2009-02-02T22:45:13.152+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache projets'/><category scheme='http://www.blogger.com/atom/ns#' term='Hudson'/><title type='text'>Dashboard Hudson des projets Apache</title><content type='html'>Pour ceux qui ne connaissent pas encore le dashboard Hudson de l’ensemble des projets Apache, voici l’adresse&lt;br /&gt;&lt;a href="http://hudson.zones.apache.org/hudson/"&gt;http://hudson.zones.apache.org/hudson/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-3251224027099784920?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/3251224027099784920/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=3251224027099784920' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/3251224027099784920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/3251224027099784920'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/02/dashboard-hudson-des-projets-apache.html' title='Dashboard Hudson des projets Apache'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-9033410478763458889</id><published>2009-01-24T21:44:00.007+01:00</published><updated>2009-01-25T10:29:10.882+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proxy'/><category scheme='http://www.blogger.com/atom/ns#' term='Gradle'/><title type='text'>Gradle et gestion d'un proxy</title><content type='html'>Dans vos projets &lt;a href="http://www.gradle.org/"&gt;Gradle&lt;/a&gt;, si vous utilisez des repository Maven distants pour récupérer vos artefacts et que vous êtes derière un proxy, vous devez spécifier les informations du proxy dans un fichier "gradle.properties" avec le contenu suivant:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;systemProp.http.proxyHost=&amp;lt;proxyHost&amp;gt;&lt;br /&gt;systemProp.http.proxyPort=&amp;lt;proxyPort&amp;gt;&lt;br /&gt;systemProp.http.proxyUser=&amp;lt;proxyUser&amp;gt;&lt;br /&gt;systemProp.http.proxyPassword=&amp;lt;proxyPassord&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Ce fichier est situé dans le même répertoire que le descripteur Gradle (build.gradle)&lt;br /&gt;&lt;br /&gt;Et la déclaration de vos dépendances sera par exemple&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;dependencies{&lt;br /&gt;  addMavenRepo('http://download.java.net/maven/2')&lt;br /&gt;  providedCompile 'org.jvnet.hudson.main:hudson-war:'+version+'@war'&lt;br /&gt; }&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Dans une infrastructure multi-utilisateur, il est préférable d'utiliser un gestionnaire de repository Maven comme &lt;a href="http://archiva.apache.org/"&gt;Archiva&lt;/a&gt; ou &lt;a href="http://nexus.sonatype.org/"&gt;Nexus&lt;/a&gt;.&lt;br /&gt;Vous trouverez un exemple d'une configuration de Archiva avec un projet Gradle sur &lt;a href="http://www.zenika.com/blog/?p=49"&gt;ce billet&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-9033410478763458889?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/9033410478763458889/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=9033410478763458889' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/9033410478763458889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/9033410478763458889'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/01/gradle-et-gestion-dun-proxy.html' title='Gradle et gestion d&apos;un proxy'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-7372706477054543570</id><published>2009-01-17T22:53:00.006+01:00</published><updated>2009-01-17T23:34:21.302+01:00</updated><title type='text'>Un bon billet sur les meilleures pratiques de l'intégration continue</title><content type='html'>Je vous invite à consulter le billet du blog de Sonatype sur les meilleures pratiques de l'intégration continue: &lt;a href="http://blogs.sonatype.com/people/2009/01/maven-continuous-integration-best-practices/"&gt;le billet&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On y apprend notamment, que si on active la propriété système "-Dsurefire.useFile=false" d'un build Maven, les résultats des tests et les explications des tests en erreur sont directement affichés dans la console. Cela est très utile quand la chaîne de build Maven est intégrée au sein d'un scheduler comme Hudson.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-7372706477054543570?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/7372706477054543570/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=7372706477054543570' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/7372706477054543570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/7372706477054543570'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/01/un-bon-billet-sur-les-meilleures.html' title='Un bon billet sur les meilleures pratiques de l&apos;intégration continue'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-532929760810987801</id><published>2009-01-17T18:17:00.006+01:00</published><updated>2009-01-17T22:31:53.111+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hudson'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><title type='text'>Hudson et le cloud computing</title><content type='html'>Depuis la version 1.271; &lt;a href="https://hudson.dev.java.net/"&gt;Hudson&lt;/a&gt; commence à se doter d'un système de cloud computing. C'est une nouvelle vision, Hudson  va proposer des mécanismes d'intelligence qui détectent les surcharges. L'objectif est par exemple de fournir une très bonne gestion dynamique des builds en cluster.&lt;br /&gt;&lt;br /&gt;Suivez la discussion sur le sujet : &lt;a href="http://www.nabble.com/hudson-and-the-cloud-tt21383264.html"&gt;ici&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-532929760810987801?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/532929760810987801/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=532929760810987801' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/532929760810987801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/532929760810987801'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/01/hudson-et-le-cloud-computing.html' title='Hudson et le cloud computing'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-436117198508333820</id><published>2009-01-15T23:33:00.022+01:00</published><updated>2009-01-17T18:16:45.786+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='servlet 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='jee6'/><category scheme='http://www.blogger.com/atom/ns#' term='jsf 2.0'/><title type='text'>Plusieurs spécifications JEE6 sont sorties</title><content type='html'>Apres dix ans d’existence, JEE arrive à sa sixième version, très attendue.&lt;br /&gt;Les 3 mots d’ordres de cette nouvelle version sont :&lt;br /&gt;- plus riche (plus de spécifications et un spectre plus large)&lt;br /&gt;- plus simple (une orientation POJO, moins de XML; y compris pour la DMZ Web)&lt;br /&gt;- plus léger (EJB Lite, les profiles, et le  « pruning », comprenez un fort depracated)&lt;br /&gt;Les spécifications des Servlet 3.0, JSF 2.0 de JEE6 sont sorties aujourd’hui.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;a href="http://jcp.org/en/jsr/detail?id=315"&gt;Servlet 3.0 (JSR 315)&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;Cette spécification est la plus attendue des différentes spécifications de JEE6.&lt;br /&gt;On pourra spécifier nos composants de présentation JEE avec les annotations comme @WebServlet, @ServletFilter, @WebServletContextListener. Ces annotions permettront de se passer du descripteur de déploiement (web.xml). Au delà de son optionalité, on pourra le modulariser avec la notion de fragments.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;a href="http://jcp.org/en/jsr/detail?id=314"&gt;JSF 2.0 (JSR 314)&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;Toujours dans une politique de simplification, le descripteur JSF faces-config.xml sera optionnel.&lt;br /&gt;On pourra faire cela @ManageBean(name="operateur",scope="session") puis @ManageProperty(value="...")&lt;br /&gt;Et enfin, cela sera basé complètement sur &lt;a href="https://facelets.dev.java.net/"&gt;Facelets&lt;/a&gt;, supprimant définitivement l'utilisation des JSP pour une application JSF.&lt;br /&gt;&lt;br /&gt;A suivre également les spécifications &lt;a href="http://jcp.org/en/jsr/detail?id=322"&gt;JCA(JSR322)&lt;/a&gt; et &lt;a href="http://jcp.org/en/jsr/detail?id=235"&gt;SDO(JSR235)&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-436117198508333820?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/436117198508333820/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=436117198508333820' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/436117198508333820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/436117198508333820'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/01/plusieurs-spcifications-jee6-sont.html' title='Plusieurs spécifications JEE6 sont sorties'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-3016946517837152042</id><published>2009-01-15T09:30:00.013+01:00</published><updated>2009-01-16T14:00:00.739+01:00</updated><title type='text'>Intégration continue et quelques problématiques</title><content type='html'>Intervenant pour la mise en place de l'intégration continue dans un très grand groupe industriel; je fais face à des structures organisationnelles où l'intégration continue est perçue de façon très disparate.&lt;br /&gt;&lt;br /&gt;Des organisations sont très motrices et demandeuses. En revanche, à l'inverse, je rencontre des personnes réticentes aux pratiques de l'intégration continue. Mon expérience m'amène à penser qu'il ne faut surtout pas imposer des mécanismes d'intégration mais apporter une démarche par la démonstration.&lt;br /&gt;&lt;br /&gt;D'autres problématiques apparaissent comme : Quelle personne ou équipe doit réaliser la chaîne de build des applications et quelle personne ou équipe doit la maintenir? Trop souvent, les équipes considèrent l'intégration continue comme un mécanisme à mettre en place une seule fois et sera figé dans le marbre pour des années. Mon avis est que cela dépend des contextes. En dehors de la portée des applications Web de gestion, on constate que l'intégration continue est très souvent fortement couplée à l'architecture technique du projet. Dans de très nombreux contextes, cette architecture va évoluer (dans certains cas; elle sera complètement remaniée). La conséquence est un  impact direct sur la chaîne de construction. C'est pourquoi, il est indispensable d'impliquer les équipes de développement dans les chaînes de construction des livrables.&lt;br /&gt;&lt;br /&gt;N'hésitez à communiquer vos expériences!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-3016946517837152042?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/3016946517837152042/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=3016946517837152042' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/3016946517837152042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/3016946517837152042'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/01/intgration-continue-et-problmatique-de.html' title='Intégration continue et quelques problématiques'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-928908960083558214</id><published>2009-01-08T23:12:00.028+01:00</published><updated>2009-01-23T18:19:19.439+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hudson'/><category scheme='http://www.blogger.com/atom/ns#' term='Ivy'/><title type='text'>Mise en oeuvre de Ivy2 dans Hudson</title><content type='html'>Cette semaine a été livré &lt;a href="http://hudson.gotdns.com/wiki/display/HUDSON/Ivy+Plugin"&gt;le plugin Hudson pour le gestionnaire de dépendances Ivy 2&lt;/a&gt;.&lt;br /&gt;L’objectif est de pouvoir déduire dans Hudson l’ordre d’exécution des jobs Hudson (1 job Hudson correspond à 1 projet Ivy) à partir des informations des dépendances fournies par Ivy.&lt;br /&gt;Cette technique permet de renfoncer les bonnes pratiques qui consistent à avoir une chaîne d’intégration indépendante du scheduler (ici Hudson). Ainsi aucune configuration supplémentaire redondante n'est nécessaire.&lt;br /&gt;&lt;br /&gt;Voici un exemple de mise en oeuvre.&lt;br /&gt;&lt;br /&gt;Soient deux jobs Hudson nommée “job1” et “job2”&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ipBg5a8rUm8/SWfNEC2VbYI/AAAAAAAAABM/UF0HVqpHM94/s1600-h/dashboard_jobs.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 120px;" src="http://3.bp.blogspot.com/_ipBg5a8rUm8/SWfNEC2VbYI/AAAAAAAAABM/UF0HVqpHM94/s320/dashboard_jobs.JPG" alt="" id="BLOGGER_PHOTO_ID_5289421756737875330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;La première étape consiste à spécifier une configuration Ivy au niveau de Hudson&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ipBg5a8rUm8/SWfNcsmCM-I/AAAAAAAAABU/Ot_Ds4nBiUg/s1600-h/ivysettings.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 54px;" src="http://2.bp.blogspot.com/_ipBg5a8rUm8/SWfNcsmCM-I/AAAAAAAAABU/Ot_Ds4nBiUg/s320/ivysettings.JPG" alt="" id="BLOGGER_PHOTO_ID_5289422180260656098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configuration du premier projet&lt;/span&gt;&lt;br /&gt;Spécifier une configuration de ivy (vous pouvez laisser celle par défaut si vous avez que 1 seul type de configuration)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ipBg5a8rUm8/SWfNwpjErbI/AAAAAAAAABc/w4cQDdwQclQ/s1600-h/job1_ivy_conf.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 105px;" src="http://4.bp.blogspot.com/_ipBg5a8rUm8/SWfNwpjErbI/AAAAAAAAABc/w4cQDdwQclQ/s320/job1_ivy_conf.JPG" alt="" id="BLOGGER_PHOTO_ID_5289422523040312754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Voici le contenu du fichier ivy-job1.xml:&lt;br /&gt;&amp;lt;ivy-module version="1.0"&amp;gt;&lt;br /&gt;    &amp;lt;info organisation="com.zenika.examples" module="job1"/&amp;gt;&lt;br /&gt;&amp;lt;/ivy-module&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configuration du second projet&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ipBg5a8rUm8/SWfOBH5kmGI/AAAAAAAAABk/ddLgyl5zsP0/s1600-h/job2_ivy_conf.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 102px;" src="http://2.bp.blogspot.com/_ipBg5a8rUm8/SWfOBH5kmGI/AAAAAAAAABk/ddLgyl5zsP0/s320/job2_ivy_conf.JPG" alt="" id="BLOGGER_PHOTO_ID_5289422806065649762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Voici le contenu du fichier ivy-job2.xml&lt;br /&gt;&amp;lt;ivy-module version="1.0"&amp;gt;&lt;br /&gt;    &amp;lt;info organisation="com.zenika.examples" module="job2"/&amp;gt;&lt;br /&gt;    &amp;lt;dependencies&amp;gt;&lt;br /&gt;        &amp;lt;dependency name="job1" rev="latest.integration" /&amp;gt;&lt;br /&gt;    &amp;lt;/dependencies&amp;gt;&lt;br /&gt;&amp;lt;/ivy-module&amp;gt;&lt;br /&gt;&lt;br /&gt;Lancer au moins un build et le résultat upstream/downstream est le suivant&lt;br /&gt;&lt;br /&gt;Le premier projet (job1) est une dépendance du second job (job2).&lt;br /&gt;L’exécution du second job (job 2) est déclenchée après l’exécution du premier job ( job1).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ipBg5a8rUm8/SWfOTm_Au3I/AAAAAAAAAB0/L07qY8LZUHU/s1600-h/hudson_job2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 229px;" src="http://4.bp.blogspot.com/_ipBg5a8rUm8/SWfOTm_Au3I/AAAAAAAAAB0/L07qY8LZUHU/s320/hudson_job2.JPG" alt="" id="BLOGGER_PHOTO_ID_5289423123647609714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ipBg5a8rUm8/SWfOPlTQbSI/AAAAAAAAABs/Tc45HAk6WH8/s1600-h/hudson_job1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 229px;" src="http://4.bp.blogspot.com/_ipBg5a8rUm8/SWfOPlTQbSI/AAAAAAAAABs/Tc45HAk6WH8/s320/hudson_job1.JPG" alt="" id="BLOGGER_PHOTO_ID_5289423054476176674" border="0" /&gt;&lt;/a&gt;&lt;/info&gt;&lt;/ivy-module&gt;&lt;/ivy-module&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-928908960083558214?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/928908960083558214/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=928908960083558214' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/928908960083558214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/928908960083558214'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/01/mise-en-oeuvre-de-ivy2-dans-hudson.html' title='Mise en oeuvre de Ivy2 dans Hudson'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ipBg5a8rUm8/SWfNEC2VbYI/AAAAAAAAABM/UF0HVqpHM94/s72-c/dashboard_jobs.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-392737843866077701</id><published>2009-01-07T23:12:00.006+01:00</published><updated>2009-01-11T20:19:41.349+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gradle'/><title type='text'>Gradle en version 0.5.1</title><content type='html'>Sortie de la version 0.5.1 de Gradle. &lt;br /&gt;Cette version contient les corrections d'un ensemble de bugs (&lt;a href="http://www.nabble.com/-ANN--Gradle-0.5.1-is-released-td21329916.html#a21329916"&gt;plus d'informations&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-392737843866077701?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/392737843866077701/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=392737843866077701' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/392737843866077701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/392737843866077701'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/01/gradle-en-version-051.html' title='Gradle en version 0.5.1'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-2340354800901541820</id><published>2009-01-05T01:37:00.015+01:00</published><updated>2009-01-13T16:55:03.610+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Licences'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><category scheme='http://www.blogger.com/atom/ns#' term='mvnbrowser'/><title type='text'>Nouvelle version du site MvnBrowser</title><content type='html'>Juste après la publication du premier post sur les moteurs de recherche d'artefacts Maven, c'est une nouvelle version du site &lt;a href="http://www.mvnbrowser.com/index.html"&gt;MvnBrowser&lt;/a&gt; qui vient juste d’être installée en ce début d’année. Cette nouvelle release fournit une amélioration du design et de la disposition des éléments. De plus, une nouvelle page est disponible, celle des licences transitives.&lt;br /&gt;&lt;br /&gt;Il vous suffit d’aller a la section “pom report”, puis de saisir l’exemple suivant:&lt;br /&gt;&lt;blockquote&gt;&amp;lt;dependencies&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;org.jvnet.hudson.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;clearcase&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;0.8.1&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;junit&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;junit&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;4.4&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;spring-core&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;log4j&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;log4j&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;1.2.15&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;/dependencies&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;La première page du premier onglet montre l’ensemble des versions disponibles pour chaque dépendance en affichant un warning si nous n'utilisons pas de la dernière version de la librairie disponible.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ipBg5a8rUm8/SWFW1lzbFjI/AAAAAAAAAAc/AyOEWSlrZ3s/s1600-h/available_versions.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 113px;" src="http://1.bp.blogspot.com/_ipBg5a8rUm8/SWFW1lzbFjI/AAAAAAAAAAc/AyOEWSlrZ3s/s320/available_versions.jpg" alt="" id="BLOGGER_PHOTO_ID_5287602916190524978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Le deuxième onglet montre l’ensemble des librairies qui seront inclus dans le classpath.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ipBg5a8rUm8/SWFWp69HrmI/AAAAAAAAAAU/2Gx-V9fDTlY/s1600-h/classpath.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 284px;" src="http://2.bp.blogspot.com/_ipBg5a8rUm8/SWFWp69HrmI/AAAAAAAAAAU/2Gx-V9fDTlY/s320/classpath.JPG" alt="" id="BLOGGER_PHOTO_ID_5287602715709910626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Et le troisième onglet montre les licences des différents artefacts (et des artefacts récupérés par dépendance transitive).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ipBg5a8rUm8/SWFW5Yw6XlI/AAAAAAAAAAk/2Lr6LYssrP0/s1600-h/licences.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://3.bp.blogspot.com/_ipBg5a8rUm8/SWFW5Yw6XlI/AAAAAAAAAAk/2Lr6LYssrP0/s320/licences.JPG" alt="" id="BLOGGER_PHOTO_ID_5287602981409807954" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-2340354800901541820?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/2340354800901541820/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=2340354800901541820' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/2340354800901541820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/2340354800901541820'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2009/01/nouvelle-version-du-site-mvnbrowser.html' title='Nouvelle version du site MvnBrowser'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ipBg5a8rUm8/SWFW1lzbFjI/AAAAAAAAAAc/AyOEWSlrZ3s/s72-c/available_versions.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-788852770281359625</id><published>2008-12-28T00:58:00.030+01:00</published><updated>2009-01-18T11:03:23.587+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nexus'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><category scheme='http://www.blogger.com/atom/ns#' term='mvnbrowser'/><category scheme='http://www.blogger.com/atom/ns#' term='Archiva'/><title type='text'>Les moteurs de recherche d'artefacts Maven</title><content type='html'>Voici un résumé des différents moyens pour rechercher les informations d'un artefact Maven. &lt;br /&gt;Un artefact Maven est caractérisé par le triplet GAV (GroupId – ArtifactId – VersionId). Il faut connaître ces trois informations pour ajouter une dépendance dans votre descripteur Maven (pom.xml).&lt;br /&gt;&lt;br /&gt;Par exemple, voici la déclaration d'une dépendance:&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;groupId&amp;gt;V&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;artifactId&amp;gt;A&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;&amp;lt;version&amp;gt;V&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;br /&gt;Le repository central officiel de Maven est situé à l'adresse suivante &lt;a href="http://repo1.maven.org/maven2/"&gt;http://repo1.maven.org/maven2/&lt;/a&gt;. De nombreux moteurs de recherche existent sur le marché afin d'obtenir les informations des artefacts dans les repository Maven. Chaque moteur a sa particularité de fonctionnement, et ainsi chacun ne renvoie pas des informations identiques pour une même demande d'artefact.&lt;br /&gt;&lt;br /&gt;Un premier moteur de recherche connu est celui à l'adresse suivante :  &lt;a href="http://www.mvnrepository.com/"&gt;http://www.mvnrepository.com/&lt;/a&gt;. Celui-ci est déconseillé car il utilise un mirroir du repository central de Maven (&lt;a href="http://mirrors.ibiblio.org/pub/mirrors/maven2/"&gt;http://mirrors.ibiblio.org/pub/mirrors/maven2/&lt;/a&gt;)  au lieu d'utiliser directement le repository central. Au delà du délai d'attente de synchronisation, ce moteur a été souvent indisponible dans le passé.&lt;br /&gt;&lt;br /&gt;Un autre moteur de recherche est celui l'adresse suivante : &lt;a href="http://www.mvnindex.org"&gt;http://www.mvnindex.org&lt;/a&gt;. Il est très efficace et à jour dans ses méta données; je le recommande. De plus, couplé à son plugin &lt;a href="http://www.mvnindex.org/pages/eclipse-plugin.html"&gt;Eclipse&lt;/a&gt;, ce moteur de recherche devient très pratique.  Le seul reproche est qu'une recherche se limite uniquement au repository central.&lt;br /&gt;&lt;br /&gt;Mais depuis peu, Sonatype a mis à disposition une instance du gestionnaire de repository &lt;a href="http://nexus.sonatype.org/"&gt;Nexus&lt;/a&gt; à l'adresse &lt;a href="http://repository.sonatype.org/index.html"&gt;http://repository.sonatype.org/index.html&lt;/a&gt;. Il s'agit d'une très bonne initiative que ne propose pas pour l'instant &lt;a href="http://archiva.apache.org/"&gt;Archiva&lt;/a&gt;, le principal challenger de Nexus. L'avantage de cet instance publique est qu'elle agrège plusieurs repositories publiques dont le repository &lt;a href="http://download.java.net/maven/2/"&gt;java.net&lt;/a&gt;, très utile pour rechercher les artefacts Hudson. Néanmoins, il existe un certain délai pour obtenir les dernières versions des artefacts. Prenons l'exemple de l'artefact "&lt;a href="http://download.java.net/maven/2/org/jvnet/hudson/plugins/doxygen/"&gt;doxygen&lt;/a&gt;" de java.net qu'il ne trouve pas. Il ne trouve pas non plus par exemple, la dernière version du plugin clearcase de Hudson en version "&lt;a href="http://download.java.net/maven/2/org/jvnet/hudson/plugins/clearcase/0.8.1/"&gt;0.8.1&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;D'autres moteurs existent sur le marché comme l'ancien site "mavenreposearch" (&lt;a href="http://maven.ozacc.com/"&gt;http://maven.ozacc.com/&lt;/a&gt;). Il est également déconseillé à cause des données obsolètes renvoyées. Il existe également le moteur de recherche JavaRepo (&lt;a href="http://javarepo.xoocode.org/"&gt;http://javarepo.xoocode.org/&lt;/a&gt;). Partie d'une très bonne initiative puisqu'il peut servir également comme moteur de recherche pour &lt;a href="http://ant.apache.org/ivy/"&gt;Ivy&lt;/a&gt;, il semble ne plus être maintenu.&lt;br /&gt;&lt;br /&gt;Et pour finir un nouveau moteur de recherche "mvnbrowser" à l'adresse &lt;a href="http://www.mvnbrowser.com/index.html"&gt;http://www.mvnbrowser.com/index.html&lt;/a&gt;.&lt;br /&gt;Celui-ci est très bien fait. Le premier avantage est &lt;a href="http://www.mvnbrowser.com/repositories.html"&gt;la richesse des repositories agrégés&lt;/a&gt;. On peut apprécier également la qualité des informations du résultat de la recherche. A ce jour, je conseillerais d'utiliser ce dernier qui est le seule à renvoyer des informations correctes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-788852770281359625?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/788852770281359625/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=788852770281359625' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/788852770281359625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/788852770281359625'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2008/12/les-moteurs-de-recherche-dartefacts.html' title='Les moteurs de recherche d&apos;artefacts Maven'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-7272179787233581264</id><published>2008-12-28T00:27:00.020+01:00</published><updated>2009-01-15T19:37:53.063+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gradle'/><title type='text'>Packager Hudson avec ses plugins en Gradle</title><content type='html'>Dans un précédent &lt;a href="http://boissinot.blogspot.com/2008/12/packager-hudson-avec-ses-plugins.html"&gt;post&lt;/a&gt;, je spécifiais comment produire avec Maven, l'archive Web de Hudson incorporant un ensemble de plugins; voici son équivalent avec Gradle:&lt;br /&gt;&lt;br /&gt;usePlugin('war')&lt;br /&gt;group='org.jvnet.hudson'&lt;br /&gt;version='1.266'&lt;br /&gt;hudsonunpack= new File('build/hudson-unpack')&lt;br /&gt;hudsonunpack.mkdirs()&lt;br /&gt;&lt;br /&gt;boolean isPlugin(File dependency){&lt;br /&gt; &amp;nbsp;if ((dependency.getName()!=null) &amp;&amp; (dependency.getName().endsWith(".hpi"))){&lt;br /&gt;  &amp;nbsp;&amp;nbsp;return true;&lt;br /&gt; &amp;nbsp;}&lt;br /&gt; &amp;nbsp;return false&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;List plugins = [&lt;br /&gt;&amp;nbsp; 'org.jvnet.hudson.plugins:doxygen:0.1@hpi',&lt;br /&gt;&amp;nbsp;                'org.jvnet.hudson.plugins:gradle:1.1@hpi',&lt;br /&gt;&amp;nbsp;                'org.jvnet.hudson.plugins:zentimestamp:1.0@hpi',&lt;br /&gt;&amp;nbsp;                'org.jvnet.hudson.plugins:clearcase:0.8.1@hpi'&lt;br /&gt;  ]&lt;br /&gt;&lt;br /&gt;List core = [&lt;br /&gt;&amp;nbsp;   'org.jvnet.hudson.main:hudson-war:'+version+'@war'&lt;br /&gt;            ]&lt;br /&gt;&lt;br /&gt;dependencies{&lt;br /&gt;&amp;nbsp;  addMavenRepo('http://download.java.net/maven/2')&lt;br /&gt;&amp;nbsp;  providedCompile core&lt;br /&gt;&amp;nbsp;  providedRuntime plugins&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;createTask('hudson-unpack'){&lt;br /&gt; &amp;nbsp;dependencies.resolve("providedCompile").each{ depFile -&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp;ant.unzip(src: depFile , dest:hudsonunpack)&lt;br /&gt; &amp;nbsp;} &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;createTask('copy-plugins'){   &lt;br /&gt; &amp;nbsp;pluginsDir = new File(hudsonunpack,'WEB-INF/plugins')&lt;br /&gt; &amp;nbsp;pluginsDir.mkdirs()&lt;br /&gt; &amp;nbsp;dependencies.resolve("providedRuntime").each{ depFile -&gt; &lt;br /&gt;  &amp;nbsp;&amp;nbspif (isPlugin(depFile))&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;ant.copy(file: depFile, todir: pluginsDir)&lt;br /&gt; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;task('hudson-unpack').execute()&lt;br /&gt;task('copy-plugins').execute()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;archive_war{&lt;br /&gt; &amp;nbsp;baseName='hudson'&lt;br /&gt; &amp;nbsp;manifest.mainAttributes(&lt;br /&gt; &amp;nbsp;&amp;nbsp;"Main-Class": "Main",&lt;br /&gt; &amp;nbsp;&amp;nbsp;"Version": version)&lt;br /&gt; &amp;nbsp;fileSet(dir: hudsonunpack){&lt;br /&gt;   &amp;nbsp;&amp;nbsp;exclude('**/HUDSON.RSA')&lt;br /&gt;   &amp;nbsp;&amp;nbsp;exclude('**/HUDSON.SF')&lt;br /&gt; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;J'avoue que l’utilisation de Gradle dans cet exemple ne permet pas de montrer sa pleine puissance et ses apports en comparaison de Maven. Néanmoins, la première remarque est l'aisance de la spécification des éléments pour la création de l'archive Web. La deuxième remarque concerne l'utilisation des tâches Ant (ant.copy et ant.unzip) pour réaliser l'équivalent des goals "copy" et "unpack" du plugin maven "maven-dependency-plugin". C'est un peu dommage, et pour l'instant sur ce point, Maven est supérieur. Mais une issue Jira (&lt;a href="http://jira.codehaus.org/browse/GRADLE-337"&gt;GRADLE-337&lt;/a&gt;) a été soumise sur le projet Gradle. N'hésiter pas à voter pour cette issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-7272179787233581264?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/7272179787233581264/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=7272179787233581264' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/7272179787233581264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/7272179787233581264'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2008/12/packager-hudson-avec-ses-plugins-en.html' title='Packager Hudson avec ses plugins en Gradle'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-5993192007933269415</id><published>2008-12-25T17:04:00.006+01:00</published><updated>2009-01-11T20:21:39.115+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Seam'/><category scheme='http://www.blogger.com/atom/ns#' term='JBoss'/><title type='text'>Sortie de Seam 2.1.1.GA</title><content type='html'>Après les deux releases candidate 2.1.1.CR1 et 2.1.1.CR2, &lt;a href="http://www.jboss.com/products/seam"&gt;JBoss Seam&lt;/a&gt; a sortie pour Noël la release 2.1.1.GA. Cette nouvelle version contient les corrections de nombreuses anomalies qui persistaient.&lt;br /&gt;&lt;br /&gt;Pour ceux qui utilisent Seam en version 1.x ou 2.0.x, n'hésiter pas à consulter les guides de migration comme &lt;a href="http://anonsvn.jboss.org/repos/seam/tags/JBoss_Seam_2_1_1_GA/seam21migration.txt"&gt;le dernier&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Consulter le &lt;a href="http://in.relation.to/Bloggers/Seam211GAIsOut"&gt;lien officiel&lt;/a&gt; de la sortie.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-5993192007933269415?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/5993192007933269415/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=5993192007933269415' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/5993192007933269415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/5993192007933269415'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2008/12/sortie-de-seam-211ga.html' title='Sortie de Seam 2.1.1.GA'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-5974819731521007726</id><published>2008-12-23T01:26:00.041+01:00</published><updated>2009-01-11T20:22:08.832+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Plug-in'/><category scheme='http://www.blogger.com/atom/ns#' term='Hudson'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><category scheme='http://www.blogger.com/atom/ns#' term='Packaging'/><title type='text'>Packager Hudson avec ses plugins</title><content type='html'>Depuis la version 1.259 de Hudson, il est possible de&lt;a href="http://hudson.gotdns.com/wiki/display/HUDSON/Bundling+plugins+with+Hudson"&gt; pré packager les plugins&lt;/a&gt; de Hudson dans l'archive Web (hudson.war).&lt;br /&gt;Il suffit d'inclure les plugins (*.hpi) dans le répertoire « WEB-INF/plugins » de l'archive. Au lancement les plugins packagés seront déployés dans l'espace de travail de Hudson $HUDSON_HIOME/plugins.&lt;br /&gt;&lt;br /&gt;L'exemple suivant montre la récupération d'une archive Hudson et d'un ensemble de plugins, puis son re-packaging avec Maven&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&amp;lt;project xmlns="http://maven.apache.org/POM/4.0.0" xsi="http://www.w3.org/2001/XMLSchema-instance" schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&amp;gt;&amp;lt;project xmlns="http://maven.apache.org/POM/4.0.0" xsi="http://www.w3.org/2001/XMLSchema-instance" schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&amp;gt;&lt;br /&gt;&amp;lt;modelversion&amp;gt;4.0.0&amp;lt;/modelversion&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;groupid&amp;gt;org.jvnet.hudson.plugins&amp;lt;/groupid&amp;gt;&lt;br /&gt;&amp;lt;artifactid&amp;gt;hudson-war&amp;lt;/artifactid&amp;gt;&lt;br /&gt;&amp;lt;packaging&amp;gt;war&amp;lt;/packaging&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.266&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;name&amp;gt;hudson-war&amp;lt;/name&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;properties&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;hudson.version&amp;gt;${project.version}&amp;lt;/hudson.version&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;hudson.unpack&amp;gt;${project.build.directory}/hudson-unpack&amp;lt;/hudson.unpack&amp;gt;&lt;br /&gt;&amp;lt;/properties&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;build&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;plugins&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupid&amp;gt;org.apache.maven.plugins&amp;lt;/groupid&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactid&amp;gt;maven-dependency-plugin&amp;lt;/artifactid&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;executions&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;execution&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;id&amp;gt;unpack-origin-archive&amp;lt;/id&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;phase&amp;gt;initialize&amp;lt;/phase&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;goals&amp;gt;&lt;br /&gt;     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;goal&amp;gt;unpack&amp;lt;/goal&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/goals&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;configuration&amp;gt;&lt;br /&gt;     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactitems&amp;gt;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactitem&amp;gt;&lt;br /&gt;         &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupid&amp;gt;org.jvnet.hudson.main&amp;lt;/groupid&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactid&amp;gt;hudson-war&amp;lt;/artifactid&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;${hudson.version}&amp;lt;/version&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;type&amp;gt;war&amp;lt;/type&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;overwrite&amp;gt;true&amp;lt;/overwrite&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;outputdirectory&amp;gt;${hudson.unpack}&amp;lt;/outputdirectory&amp;gt;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/artifactitem&amp;gt;&lt;br /&gt;     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/artifactitems&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/execution&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;execution&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;id&amp;gt;copy-plugins&amp;lt;/id&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;phase&amp;gt;initialize&amp;lt;/phase&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;goals&amp;gt;&lt;br /&gt;     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;goal&amp;gt;copy&amp;lt;/goal&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/goals&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;configuration&amp;gt;&lt;br /&gt;     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactitems&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactitem&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupid&amp;gt;org.jvnet.hudson.plugins&amp;lt;/groupid&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactid&amp;gt;clearcase&amp;lt;/artifactid&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;0.8.1&amp;lt;/version&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;type&amp;gt;hpi&amp;lt;/type&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;outputdirectory&amp;gt;${hudson.unpack}/WEB-INF/plugins&amp;lt;/outputdirectory&amp;gt;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/artifactitem&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactitem&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupid&amp;gt;org.jvnet.hudson.plugins&amp;lt;/groupid&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactid&amp;gt;doxygen&amp;lt;/artifactid&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;0.1&amp;lt;/version&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;type&amp;gt;hpi&amp;lt;/type&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;outputdirectory&amp;gt;${hudson.unpack}/WEB-INF/plugins&amp;lt;/outputdirectory&amp;gt;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/artifactitem&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactitem&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupid&amp;gt;org.jvnet.hudson.plugins&amp;lt;/groupid&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactid&amp;gt;zentimestamp&amp;lt;/artifactid&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;type&amp;gt;hpi&amp;lt;/type&amp;gt;&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;outputdirectory&amp;gt;${hudson.unpack}/WEB-INF/plugins&amp;lt;/outputdirectory&amp;gt;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/artifactitem&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/artifactitems&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/execution&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/executions&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupid&amp;gt;org.apache.maven.plugins&amp;lt;/groupid&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactid&amp;gt;maven-war-plugin&amp;lt;/artifactid&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;2.1-alpha-2&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;classifier&amp;gt;withplugins&amp;lt;/classifier&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;webresources&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;resource&amp;gt;&lt;br /&gt;     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;directory&amp;gt;${hudson.unpack}&amp;lt;/directory&amp;gt;&lt;br /&gt;     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;excludes&amp;gt;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;exclude&amp;gt;META-INF/HUDSON.SF&amp;lt;/exclude&amp;gt;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;exclude&amp;gt;META-INF/HUDSON.RSA&amp;lt;/exclude&amp;gt;&lt;br /&gt;     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/excludes&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/resource&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/webresources&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;archive&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;manifestfile&amp;gt;${hudson.unpack}/META-INF/MANIFEST.MF&amp;lt;/manifestfile&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/archive&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/plugins&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/build&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Il vous suffira ensuite de lancer la commande &lt;i&gt;mvn clean package&lt;/span&gt;&lt;/i&gt; pour obtenir la nouvelle archive Hudson &lt;i&gt;hudson-war-1.266-withplugins.war&lt;/i&gt; avec les plugins inclus.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-5974819731521007726?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/5974819731521007726/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=5974819731521007726' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/5974819731521007726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/5974819731521007726'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2008/12/packager-hudson-avec-ses-plugins.html' title='Packager Hudson avec ses plugins'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-9043699808875544536</id><published>2008-12-17T22:57:00.055+01:00</published><updated>2009-01-21T17:09:28.224+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Barcamp'/><category scheme='http://www.blogger.com/atom/ns#' term='Ant'/><category scheme='http://www.blogger.com/atom/ns#' term='Integration continue'/><category scheme='http://www.blogger.com/atom/ns#' term='Hudson'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><category scheme='http://www.blogger.com/atom/ns#' term='Gant'/><category scheme='http://www.blogger.com/atom/ns#' term='Gradle'/><title type='text'>Retour sur le barcamp 2</title><content type='html'>Voici le retour sur la session concernant l’intégration continue et les outils de build du &lt;a href="http://barcamp.org/JavaCampParis2"&gt;barcamp deuxième edition&lt;/a&gt; organisé par &lt;a href="http://www.octo.com/"&gt;OCTO&lt;/a&gt; mardi dernier. Cette session s’est déroulée en présence d’une dizaine de personnes ayant chacune un retour d’expérience a faire partager.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Partie sur les outils de build&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Le premier sujet abordé a été « &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; au delà du poste de développement ». Un sujet délicat, qui revient souvent dans les équipes que je rencontre. Selon mon expérience, l'outil Maven doit être limité aux phases de compilation, de tests et de packaging. Il faut laisser le déploiement de ces artifacts aux scripts shell ou ksh souvent existant, et maintenus par une équipe spécifique dans les structures d’entreprises de taille importante. Maven doit donc être utilisé pour réaliser des fonctions de build uniquement. En revanche, il est important d’insister sur le fait que dans le cadre de développement JEE, l’archive Web produite doit être indépendante de l’environnement final. C’est au conteneur Web (ex :Tomcat) de contenir la configuration de l’environnement nécessaire comme par exemple la configuration de l’environnement de dev, de recette, de pre-prod et de prod. Et attention a l’utilisation abusive des profils Maven. Ces profils sont très utiles pour choisir le serveur de déploiement dans le cas d'une gestion de configuration des environnements des tests mais ne doit en aucun cas être utilisés pour réaliser un artifact de developement ou de recette en fonction de l’activation d’un profil de dev ou de recette (ex : -Penv=dev ou –Penv=rec). Utiliser cette technique pour ce cas d'utilisation est un abus de la puissance de Maven. En conclusion, il faut produire des artifacts génériques et classifier vos artifact par nature si besoin (sources, tests, …) et non pas par environnement.&lt;br /&gt;&lt;br /&gt;L’autre point abordé a été l’utilisation de Maven dans les IDE. Pour &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt;, l’utilisation de Maven est facilitée par l’intégration du plugin maven-eclipse-plugin (mvn eclipse:eclipse) ou par les plugins Eclipse &lt;a href="http://code.google.com/p/q4e/"&gt;Q4E&lt;/a&gt; ou &lt;a href="http://m2eclipse.sonatype.org/"&gt;m2eclipse&lt;/a&gt;. Un retour sur les lenteurs du plugin m2eclipse a été notifié. Cela renforce mon choix d’utiliser maven de manière complètement indépendante de l’utilisation des taches quotidiennes de développement au sein de l’IDE. A noter que rien ne vaut la gestion de Maven dans &lt;a href="http://www.jetbrains.com/idea/"&gt;IDEA IntelliJ&lt;/a&gt;, qui depuis la version 7 permet une lecture directe des descripteurs Maven (pom.xml). Il a été également abordé la bonne intégration de Maven dans &lt;a href="http://www.netbeans.org/"&gt;NetBeans&lt;/a&gt;. Mais la question que je me pose après coup : pourquoi utiliser NetBeans aujourd’hui pour les développements non Swing?&lt;br /&gt;&lt;br /&gt;Il a été discuté ensuite de l’automatisation des tests d’IHM avec &lt;a href="http://selenium.seleniumhq.org/"&gt;Selenium&lt;/a&gt; et de son intégration avec Maven. Selenium est un outil très populaire, qui s’impose aujourd’hui en entreprise. On peut affirmer que le concurrent &lt;a href="http://watij.com/"&gt;Watij&lt;/a&gt; est en perte de vitesse. A noter que pour ceux qui exposent leur logique métier via REST, il est possible d’utiliser Selenium pour tester les flux http de retour dans le cas de XML. Concernant son intégration avec Maven, j’ai insisté qu’il s’agit de tests d’intégration et que Maven ne supporte pas très bien les tests d’intégration. La technique qu’il faut utiliser est de produire un module dédié aux tests d’intégration sur lequel la phase Maven des tests unitaires est skipée et que l'exécution des tests du projet est lié sur la phase Maven « integration-test ». Ensuite, il suffit simplement d’utiliser le plugin selenium server et le tour est joué.&lt;br /&gt;&lt;br /&gt;Au delà de tout cela, j’ai essayé de montrer la lourdeur de Maven lorsqu’on sort des conventions en voulant scripter des produits non JEE comne des plugins RCP. Les conventions de Maven et le total manque de flexibilité me permettent d’affirmer qu’il est nécessaire de ne pas choisir Maven systématiquement comme builder pour vos applications Java. Dans ce cadre, il est plus intéressant de rester sur des scripts ANT ou de passer sur des scripts &lt;a href="http://gant.codehaus.org/"&gt;Gant&lt;/a&gt; ou &lt;a href="http://www.gradle.org/"&gt;Gradle&lt;/a&gt;. Gant est un langage de build au-dessus de Ant avec la syntaxe du langage Groovy. Couplé au gestionnaire de dépendances &lt;a href="http://ant.apache.org/ivy/"&gt;Ivy&lt;/a&gt;, il en fait un choix de premier ordre pour donner de la flexibilité à vos scripts de build. En revanche, si vous travaillez sur des projets plus conventionnés, ne pas hésiter a jeter un coup d’œil à Gradle qui est un outil de build comme Gant pour le langage de script en Groovy, mais avec en plus les conventions de Maven et un cycle de vie.  Voici sur ce &lt;a href="http://www.zenika.com/blog/?p=38"&gt;post&lt;/a&gt;, un exemple de gestion multi-projet avec Gradle.&lt;br /&gt;&lt;br /&gt;D’autres outils on été cités en fin de session comme &lt;a href="http://raven.rubyforge.org/index.html"&gt;Raven&lt;/a&gt;, il s’agit d’un maven en Ruby. Le projet est en fin de vie. Desolé pour les fans de Ruby, mais Ruby n’a rien a envier comparé à Groovy ou &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt; (ou son petit frère pour Java : &lt;a href="http://www.jython.org/Project/"&gt;Jython&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;A noter que pour ceux qui construisent des projets C/C++, l’outil très utilisé en entreprise est le builder &lt;a href="http://www.scons.org/"&gt;Scons&lt;/a&gt; écrit en Python.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Les outils d’intégration continue&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La deuxième partie de cette session a concernée plus spécifiquement les serveurs d’intégration continue. Sujet très ancien, tout le monde connaît &lt;a href="http://martinfowler.com/articles/continuousIntegration.html"&gt;le poste de Martin Fowler&lt;/a&gt; sur le sujet qui date de 2006, il s’agit néanmoins d’un sujet qui explose chez tous les clients ou j’interviens. En terme de choix d’outil, toutes les personnes dans la salle sont unaniment sur le fait que &lt;a href="https://hudson.dev.java.net/"&gt;Hudson&lt;/a&gt; est le serveur d’intégration continue incontournable en ce moment. Cette affirmation est confirmée par le sondage fait à Devoxx comme signalé sur &lt;a href="http://weblogs.java.net/blog/kohsuke/archive/2008/12/hudson_adoption_1.html"&gt; le blog&lt;/a&gt; du créateur de Hudosn: Kohsuke Kawaguchi.&lt;br /&gt;&lt;br /&gt;Nous avons également discuté des livraisons très rapprochées de Hudson. Hudson produit une release très régulièrement de son core.&lt;br /&gt;Comme j’en parle &lt;a href="http://www.zenika.com/blog/?p=37"&gt;ici&lt;/a&gt;, il est important au niveau des ses clients de qualifier une version avant d’updater sa version de Hudson et il est bien sûr impossible d’utiliser systématiquement la dernière release de Hudson en production.&lt;br /&gt;&lt;br /&gt;Il a été également abordé la gestion dans Hudson d’un projet multi-branche. L’autre approche des mécanismes  multi-branche est l’utilisation d’une seule branche au niveau de son SCM et la pratique des pre-tested commit. Aujourd’hui, il s’agit de la seule fonctionnalité manquante au niveau Hudson, et qui pourrait nous faire basculer vers son principal challenger aujourd’hui &lt;a href="http://www.jetbrains.com/teamcity/"&gt;TeamCty&lt;/a&gt;. Mais que les utilisateurs de Hudson se rassurent, cette fonctionnalité est en cours de développement et sera tout &lt;a href="https://hudson.dev.java.net/issues/show_bug.cgi?id=1682"&gt;prochainement disponible&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Au-delà de ceci, quelques retours de plugins Hudson comme le CI game hudson plugin qui en conclusion ne sert à rien.&lt;br /&gt;&lt;br /&gt;Le format court et la richesse du contenu ne m’a pas permit d’aborder de nombreux points qui me tenaient a cœur comme quelle personne ou équipe doit être en charge de faire évoluer le build continue? Et quelles sont les connaissances requises et nécessaires pour laisser une équipe être autonome avec une intégration continue?&lt;br /&gt;Une prochaine fois sûrement.&lt;br /&gt;&lt;br /&gt;En conclusion, une très bonne soirée dans des locaux impeccables, et le tout sur les Champs-Elysées.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-9043699808875544536?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/9043699808875544536/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=9043699808875544536' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/9043699808875544536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/9043699808875544536'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2008/12/retour-sur-le-barcamp-2.html' title='Retour sur le barcamp 2'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-4038250520078850429</id><published>2008-12-15T22:24:00.004+01:00</published><updated>2008-12-23T11:12:50.863+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CI'/><category scheme='http://www.blogger.com/atom/ns#' term='Hudson'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><category scheme='http://www.blogger.com/atom/ns#' term='Gant'/><category scheme='http://www.blogger.com/atom/ns#' term='Gradle'/><title type='text'>Les composantes d’une intégration continue</title><content type='html'>J’apprécie l’approche apportée par l’article de Meera Subbarao sur son &lt;a href="http://meera-subbarao.blogspot.com/2008/12/three-pillars-of-continuous-integration.html"&gt;blog&lt;/a&gt; sur les trois composantes de l’intégration continue :&lt;o:p&gt;&lt;/o:p&gt;&lt;p&gt;&lt;/p&gt;  &lt;ol style="margin-top: 0in;" start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="FR"&gt;Un gestionnaire de configuration      comme &lt;a href="http://subversion.tigris.org/"&gt;Subvervsion&lt;/a&gt; ou &lt;a href="http://www-01.ibm.com/software/awdtools/clearcase/"&gt;Clearcase&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="FR"&gt;Un moteur d’intégration continue comme &lt;a href="https://hudson.dev.java.net/"&gt;     Hudson&lt;o:p&gt;&lt;/o:p&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="FR"&gt;Un processus de build automatique s’appuyant      par exemple sur &lt;a href="http://ant.apache.org/"&gt;Ant&lt;/a&gt;, &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt;, &lt;a href="http://gant.codehaus.org/"&gt;Gant&lt;/a&gt; ou le nouvel outil de build &lt;a href="http://www.gradle.org/"&gt;Gradle&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-4038250520078850429?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/4038250520078850429/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=4038250520078850429' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/4038250520078850429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/4038250520078850429'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2008/12/les-composants-dune-intgration-continue.html' title='Les composantes d’une intégration continue'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3092972573780211636.post-5686060589933123166</id><published>2008-12-14T16:59:00.005+01:00</published><updated>2008-12-23T11:09:36.957+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hudson'/><category scheme='http://www.blogger.com/atom/ns#' term='Gradle'/><title type='text'>Gradle en version 0.5</title><content type='html'>La version 0.5 de &lt;a href="http://gradle.org/"&gt;Gradle&lt;/a&gt; est sortie début décembre.&lt;br /&gt;Parmi les nouveautés, on notera :&lt;br /&gt;- Création de propriétés dynamiques&lt;br /&gt;- Génération de bundle OSGI&lt;br /&gt;- Déploiement dans un repository Maven&lt;br /&gt;- Gestion améliorée de plusieurs niveaux de logging&lt;br /&gt;- Le retour à un script de démarrage Windows (gradle.bat)&lt;br /&gt;Cette dernière fonctionnalité est très importante, elle permet de prendre en compte clairement le code de retour de l'exécution d'un script de build Gradle. Une valeur correcte du code de retour de l'exécution d'un script est indispensable pour une possible intégration au sein d'un serveur d'intégration continue. A noter que l'intégration de Gradle dans &lt;a href="https://hudson.dev.java.net/"&gt;Hudson&lt;/a&gt; à travers son &lt;a href="http://hudson.gotdns.com/wiki/display/HUDSON/Gradle+Plugin"&gt;plugin&lt;/a&gt;, prend déjà en compte cette fonctionnalité.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3092972573780211636-5686060589933123166?l=boissinot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://boissinot.blogspot.com/feeds/5686060589933123166/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3092972573780211636&amp;postID=5686060589933123166' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/5686060589933123166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3092972573780211636/posts/default/5686060589933123166'/><link rel='alternate' type='text/html' href='http://boissinot.blogspot.com/2008/12/gradle-en-version-05.html' title='Gradle en version 0.5'/><author><name>Gregory Boissinot's Blog</name><uri>http://www.blogger.com/profile/03190372197505487704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
