<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Un expresso sans sucre &#187; maven</title>
	<atom:link href="http://blog.tartachuc.org/tag/maven/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tartachuc.org</link>
	<description>Java,  Architecture &#38; Methodes agiles par Thomas Recloux</description>
	<lastBuildDate>Wed, 18 Jan 2012 09:30:10 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.tartachuc.org' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Un expresso sans sucre &#187; maven</title>
		<link>http://blog.tartachuc.org</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.tartachuc.org/osd.xml" title="Un expresso sans sucre" />
	<atom:link rel='hub' href='http://blog.tartachuc.org/?pushpress=hub'/>
		<item>
		<title>Maven2 au ChtiJUG</title>
		<link>http://blog.tartachuc.org/2009/06/15/maven2-au-chtijug/</link>
		<comments>http://blog.tartachuc.org/2009/06/15/maven2-au-chtijug/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 21:20:46 +0000</pubDate>
		<dc:creator>Thomas Recloux</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[chtijug]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://blog.tartachuc.org/?p=138</guid>
		<description><![CDATA[Ce soir j&#8217;ai participé à la deuxième réunion du ChtiJUG, le club des Javaistes du Nord. Thème de la soirée : Maven2, la présentation était effectuée par Arnaud Héritier, commiter et membre du comité du projet. Cela fait maintenant 6 ans que je pratique Maven et je venais surtout pour profiter de l&#8217;expérience d&#8217;Arnaud que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.tartachuc.org&amp;blog=23137075&amp;post=138&amp;subd=tartachuc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ce soir j&#8217;ai participé à la deuxième réunion du <a href="http://chtijug.org/">ChtiJUG</a>, le club des Javaistes du Nord.</p>
<p>Thème de la soirée : <a href="http://maven.apache.org/">Maven2</a>, la présentation était effectuée par <a href="http://blog.aheritier.net/">Arnaud Héritier</a>, commiter et membre du comité du projet.</p>
<p>Cela fait maintenant 6 ans que je pratique Maven et je venais surtout pour profiter de l&#8217;expérience d&#8217;Arnaud que l&#8217;on imagine avoir participé à de multiples mises en places.</p>
<p>J&#8217;ai trouvé la présentation intéressante, Arnaud ne manie pas la langue de bois et n&#8217;est pas avar en anecdotes et conseils.</p>
<p>Voici les points que j&#8217;ai retenu de sa présentation :</p>
<ul>
<li>Maven ne convient pas à tous les projets, notamment quand il n&#8217;y a pas de besoin de standardisation ou de réutilisation</li>
<li>Dans un premier temps, se contenter d&#8217;une mise en place simpliste, en évitant de sur utiliser les capacités avancées de l&#8217;outil : héritages à n niveaux, trop de modules, profils, &#8230;</li>
<li>De concentrer ensuite sur la sécurisation du build : utiliser un proxy maven pour pallier à une défaillance des serveurs centraux, préciser la version de tous les plugins.</li>
<li>Enfin : industrialiser le build : mettre en place une intégration continue, mettre en place les outils et rapports qualité, automatiser la release.</li>
</ul>
<p>Arnaud a également pas mal partagé sur sa vision des outils de l&#8217;écosystème Maven et se montre très enthousiaste quand il parle de <a href="http://nexus.sonatype.org/">Nexus</a> (proxy et référentiel maven)  ou de <a href="https://hudson.dev.java.net/">Hudson</a> (intégration continue)</p>
<p>Autre remarque d&#8217;Arnaud : configurez Maven pour qu&#8217;il s&#8217;adapte à votre IDE et pas l&#8217;inverse : il faut passer le moins de temps possible dans la console.</p>
<p>Je pense que la fin de la présentation ainsi que certaines questions ont du plonger une bonne partie de la salle dans de profonds doutes quand au coté simple de l&#8217;outil, le niveau était assez relevé <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Coup de chapeau à mon ami et collègue <a href="http://jsevellec.blogspot.com/">Jérémy</a> qui a brillamment gagné une licence <a href="http://www.jetbrains.com/idea/">IntelliJ IDEA</a> en répondant à une question difficile : de quel projet est issu Maven : vous le saviez vous ?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tartachuc.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tartachuc.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tartachuc.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tartachuc.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tartachuc.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tartachuc.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tartachuc.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tartachuc.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tartachuc.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tartachuc.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tartachuc.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tartachuc.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tartachuc.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tartachuc.wordpress.com/138/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.tartachuc.org&amp;blog=23137075&amp;post=138&amp;subd=tartachuc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.tartachuc.org/2009/06/15/maven2-au-chtijug/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/19b0cd2457923995444d0e963cf799bd?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">trecloux</media:title>
		</media:content>
	</item>
		<item>
		<title>Ca bouge du coté des plugins maven pour GWT</title>
		<link>http://blog.tartachuc.org/2008/11/30/ca-bouge-du-cote-des-plugins-maven-pour-gwt/</link>
		<comments>http://blog.tartachuc.org/2008/11/30/ca-bouge-du-cote-des-plugins-maven-pour-gwt/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 14:34:31 +0000</pubDate>
		<dc:creator>Thomas Recloux</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://blog.tartachuc.org/?p=84</guid>
		<description><![CDATA[Charlie Collins annonce qu&#8217;il va rejoindre le projet Mojo afin de fusionner le plugin GWT-Maven qu&#8217;il a réalisé avec celui du projet Mojo : gwt-maven-plugin. Je pense que c&#8217;est une très bonne nouvelle pour l&#8217;industrialisation des projets GWT, tous les efforts d&#8217;outillage autour de maven porteront sur le même produit.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.tartachuc.org&amp;blog=23137075&amp;post=84&amp;subd=tartachuc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.screaming-penguin.com/node/7630">Charlie Collins annonce</a> qu&#8217;il va rejoindre le projet <a href="http://mojo.codehaus.org/">Mojo</a> afin de fusionner le plugin <a href="http://code.google.com/p/gwt-maven/">GWT-Maven</a> qu&#8217;il a réalisé avec celui du projet Mojo : <a href="http://mojo.codehaus.org/gwt-maven-plugin/">gwt-maven-plugin</a>.</p>
<p>Je pense que c&#8217;est une très bonne nouvelle pour l&#8217;industrialisation des projets GWT, tous les efforts d&#8217;outillage autour de maven porteront sur le même produit.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tartachuc.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tartachuc.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tartachuc.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tartachuc.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tartachuc.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tartachuc.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tartachuc.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tartachuc.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tartachuc.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tartachuc.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tartachuc.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tartachuc.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tartachuc.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tartachuc.wordpress.com/84/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.tartachuc.org&amp;blog=23137075&amp;post=84&amp;subd=tartachuc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.tartachuc.org/2008/11/30/ca-bouge-du-cote-des-plugins-maven-pour-gwt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/19b0cd2457923995444d0e963cf799bd?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">trecloux</media:title>
		</media:content>
	</item>
		<item>
		<title>Créer un packaging maven2</title>
		<link>http://blog.tartachuc.org/2008/07/07/creer-un-packaging-maven2/</link>
		<comments>http://blog.tartachuc.org/2008/07/07/creer-un-packaging-maven2/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 18:46:12 +0000</pubDate>
		<dc:creator>Thomas Recloux</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://blog.tartachuc.org/?p=28</guid>
		<description><![CDATA[Maven 2 propose d&#8217;origine les types de packaging des différents composants java / j2ee : jar, war, ejb et ear. Cependant, il faut parfois utiliser des types de packaging moins conventionnels qui nécessitent la création d&#8217;un packaging maven dédié. Pour exemple, je vais créer un packaging nommé &#8220;custom&#8221;, qui va créer des archives avec l&#8217;extension [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.tartachuc.org&amp;blog=23137075&amp;post=28&amp;subd=tartachuc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Maven 2 propose d&#8217;origine les types de packaging des différents composants java / j2ee : jar, war, ejb et ear.</p>
<p>Cependant, il faut parfois utiliser des types de packaging moins conventionnels qui nécessitent la création d&#8217;un packaging maven dédié.</p>
<p>Pour exemple, je vais créer un packaging nommé &#8220;custom&#8221;, qui va créer des archives avec l&#8217;extension .cust et qui contient les classes et ressources du projet dans un répertoire &#8220;classes&#8221; et les dépendances du projet dans un répertoire lib.</p>
<ul>
<li> Première étape : créer le plugin maven2 à l&#8217;aide de l&#8217;archetype plugin :<code class="java"><br />
mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-plugin -DgroupId=org.tartachuc.m2 -DartifactId=my-custom-packaging</code></li>
<li>Ajouter dans le descripteur de projet pom.xml le projet maven-archiver :
<pre><code class="java">
&lt;dependency&gt;
&lt;groupId&gt;org.apache.maven&lt;/groupId&gt;
&lt;artifactId&gt;maven-archiver&lt;/artifactId&gt;
&lt;version&gt;2.2&lt;/version&gt;
&lt;/dependency&gt;
</code></pre>
</li>
<li> Modifier le MOJO généré par l&#8217;archetype pour qu&#8217;il prenne en charge le packaging.
<ul>
<li>Renommer la classe MyMojo en CustomPackageMojo</li>
<li>Changer le commentaire en entête de la classe pour préciser le goal : custom et la phase : package
<pre><code class="java">
/**
* Goal which creates a custom package
* <strong>@goal custom</strong>
* <strong>@phase package</strong>
*/
</code></pre>
</li>
<li>Ajouter au Mojo les attributs et leur documentation qui vont permettre de récupérer des informations sur le projet qui utilise le plugin :
<pre><code class="java"><span class="comment">/**
* The maven project.
* @parameter expression="${project}"
* @required
* @readonly
*/</span>
<span class="keyword">private</span> MavenProject project;

<span class="comment">/**
* The directory containing generated classes.
* @parameter expression="${project.build.outputDirectory}"
* @required
* @readonly
*/</span>
<span class="keyword">private</span> File classesDirectory;

<span class="comment">/**
* Build directory.
* @parameter expression="${project.build.directory}"
* @required
*/</span>
<span class="keyword">private</span> File buildDirectory;</code></pre>
</li>
<li> Ajouter au Mojo les attributs qui vont permettre de créer l&#8217;archive :
<pre><code class="java"><span class="comment">/**
 * The Jar archiver needed for archiving.
 * @parameter expression="${component.org.codehaus.plexus.archiver.Archiver#jar}"
 * @required
 */</span>
<span class="keyword">private</span> JarArchiver jarArchiver;

<span class="comment">/**
 * The maven archive configuration to use
 * @parameter
 */</span>
<span class="keyword">protected</span> MavenArchiveConfiguration archive = <span class="keyword">new</span> MavenArchiveConfiguration();</code></pre>
</li>
<li> Ce packaging maison nécessite d&#8217;archiver les dépendances du projet, dans un premier temps les dépendances vont être copiées dans un répertoire de travail. Pour pouvoir configurer ce répertoire de travail, ajouter un attribut au Mojo
<pre><code class="java"><span class="comment">/**
 * Lib directory
 *
 * @parameter expression="${project.build.directory}/custom/libs"
 * @required
 */</span>
<span class="keyword">private</span> File libDirectory;</code></pre>
</li>
<li> Il faut maintenant implémenter la méthode &#8220;execute&#8221; qui est le point d&#8217;entrée du Mojo.
<pre><code class="java"><span class="comment">/** {@inheritDoc} */</span>
<span class="keyword">public</span> <span class="keyword">void</span> execute() <span class="keyword">throws</span> MojoExecutionException {
    <span class="comment">// Compute archive name</span>
    String archiveName = project.getBuild().getFinalName() + <span class="string">".cust"</span>;
    File custFile = <span class="keyword">new</span> File(buildDirectory, archiveName);
    <span class="comment">// Configure archiver</span>
    MavenArchiver archiver = <span class="keyword">new</span> MavenArchiver();
    archiver.setArchiver(jarArchiver);
    archiver.setOutputFile(custFile);

    <span class="comment">// copy runtime libs</span>
    copyLibs();
    <span class="keyword">try</span> {
        <span class="comment">// archive classes</span>
        archiver.getArchiver().addDirectory(classesDirectory, <span class="string">"classes/"</span>);
        <span class="comment">// archive libs</span>
        archiver.getArchiver().addDirectory(libDirectory, <span class="string">"lib/"</span>);
        <span class="comment">// create archive</span>
        archiver.createArchive(project, archive);
        <span class="comment">// set archive as artifact</span>
        project.getArtifact().setFile(custFile);
    } <span class="keyword">catch</span> (ArchiverException e) {
        <span class="keyword">throw</span> <span class="keyword">new</span> MojoExecutionException(<span class="string">"Exception while packaging"</span>, e);
    } <span class="keyword">catch</span> (ManifestException e) {
        <span class="keyword">throw</span> <span class="keyword">new</span> MojoExecutionException(<span class="string">"Exception while packaging"</span>, e);
    } <span class="keyword">catch</span> (IOException e) {
        <span class="keyword">throw</span> <span class="keyword">new</span> MojoExecutionException(<span class="string">"Exception while packaging"</span>, e);
    } <span class="keyword">catch</span> (DependencyResolutionRequiredException e) {
        <span class="keyword">throw</span> <span class="keyword">new</span> MojoExecutionException(<span class="string">"Exception while packaging"</span>, e);
    }
}

<span class="comment">/**
 * Copy runtime libs
 * @throws MojoExecutionException
 */</span>
<span class="keyword">protected</span> <span class="keyword">void</span> copyLibs() <span class="keyword">throws</span> MojoExecutionException {
    <span class="keyword">try</span> {
        Set artifacts = project.getArtifacts();
        <span class="keyword">for</span> (Iterator iter = artifacts.iterator(); iter.hasNext();) {
            Artifact artifact = (Artifact) iter.next();
            ScopeArtifactFilter filter = <span class="keyword">new</span> ScopeArtifactFilter(
                    Artifact.SCOPE_RUNTIME);
            <span class="keyword">if</span> (!artifact.isOptional() &amp;&amp; filter.include(artifact)
                    &amp;&amp; <span class="string">"jar"</span>.equals(artifact.getType())) {
                FileUtils.copyFileToDirectory(artifact.getFile(),
                        libDirectory);
            }
        }
    } <span class="keyword">catch</span> (IOException e) {
        <span class="keyword">throw</span> <span class="keyword">new</span> MojoExecutionException(<span class="string">"Error copying libs"</span>, e);
    }
}    </code></pre>
</li>
</ul>
</li>
<li> Il faut maintenant indiquer à maven quel MOJO exécuter lors du cycle de vie de notre nouveau packaging. Pour cela, le plugin doit inclure un descripteur plexus nommé <em>components.xml</em> à placer dans répertoire <em>src/main/resources/META-INF/plexus</em>.
<pre><code class="xml"><span class="pi">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span>
<span class="tag">&lt;<span class="title">component</span><span class="tag_internal">-set&gt;</span></span>
  <span class="tag">&lt;<span class="title">components</span><span class="tag_internal">&gt;</span></span>
    <span class="tag">&lt;<span class="title">component</span><span class="tag_internal">&gt;</span></span>
      <span class="tag">&lt;<span class="title">role</span><span class="tag_internal">&gt;</span></span>org.apache.maven.artifact.handler.ArtifactHandler<span class="tag">&lt;/<span class="title">role</span><span class="tag_internal">&gt;</span></span>
      <span class="tag">&lt;<span class="title">role</span><span class="tag_internal">-hint&gt;</span></span>cust<span class="tag">&lt;/<span class="title">role</span><span class="tag_internal">-hint&gt;</span></span>
      <span class="tag">&lt;<span class="title">implementation</span><span class="tag_internal">&gt;</span></span>org.apache.maven.artifact.handler.DefaultArtifactHandler<span class="tag">&lt;/<span class="title">implementation</span><span class="tag_internal">&gt;</span></span>
      <span class="tag">&lt;<span class="title">configuration</span><span class="tag_internal">&gt;</span></span>
        <span class="tag">&lt;<span class="title">type</span><span class="tag_internal">&gt;</span></span>cust<span class="tag">&lt;/<span class="title">type</span><span class="tag_internal">&gt;</span></span>
        <span class="tag">&lt;<span class="title">extension</span><span class="tag_internal">&gt;</span></span>cust<span class="tag">&lt;/<span class="title">extension</span><span class="tag_internal">&gt;</span></span>
        <span class="tag">&lt;<span class="title">language</span><span class="tag_internal">&gt;</span></span>java<span class="tag">&lt;/<span class="title">language</span><span class="tag_internal">&gt;</span></span>
      <span class="tag">&lt;/<span class="title">configuration</span><span class="tag_internal">&gt;</span></span>
    <span class="tag">&lt;/<span class="title">component</span><span class="tag_internal">&gt;</span></span>
    <span class="tag">&lt;<span class="title">component</span><span class="tag_internal">&gt;</span></span>
      <span class="tag">&lt;<span class="title">role</span><span class="tag_internal">&gt;</span></span>org.apache.maven.lifecycle.mapping.LifecycleMapping<span class="tag">&lt;/<span class="title">role</span><span class="tag_internal">&gt;</span></span>
      <span class="tag">&lt;<span class="title">role</span><span class="tag_internal">-hint&gt;</span></span>cust<span class="tag">&lt;/<span class="title">role</span><span class="tag_internal">-hint&gt;</span></span>
      <span class="tag">&lt;<span class="title">implementation</span><span class="tag_internal">&gt;</span></span>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping<span class="tag">&lt;/<span class="title">implementation</span><span class="tag_internal">&gt;</span></span>
      <span class="tag">&lt;<span class="title">configuration</span><span class="tag_internal">&gt;</span></span>
        <span class="tag">&lt;<span class="title">phases</span><span class="tag_internal">&gt;</span></span>
          <span class="tag">&lt;<span class="title">process</span><span class="tag_internal">-resources&gt;</span></span>org.apache.maven.plugins:maven-resources-plugin:resources<span class="tag">&lt;/<span class="title">process</span><span class="tag_internal">-resources&gt;</span></span>
          <span class="tag">&lt;<span class="title">compile</span><span class="tag_internal">&gt;</span></span>org.apache.maven.plugins:maven-compiler-plugin:compile<span class="tag">&lt;/<span class="title">compile</span><span class="tag_internal">&gt;</span></span>
          <span class="tag">&lt;<span class="title">process</span><span class="tag_internal">-test-resources&gt;</span></span>org.apache.maven.plugins:maven-resources-plugin:testResources<span class="tag">&lt;/<span class="title">process</span><span class="tag_internal">-test-resources&gt;</span></span>
          <span class="tag">&lt;<span class="title">test</span><span class="tag_internal">-compile&gt;</span></span>org.apache.maven.plugins:maven-compiler-plugin:testCompile<span class="tag">&lt;/<span class="title">test</span><span class="tag_internal">-compile&gt;</span></span>
          <span class="tag">&lt;<span class="title">test</span><span class="tag_internal">&gt;</span></span>org.apache.maven.plugins:maven-surefire-plugin:test<span class="tag">&lt;/<span class="title">test</span><span class="tag_internal">&gt;</span></span>
          <span class="tag">&lt;<span class="title">package</span><span class="tag_internal">&gt;</span></span><strong>org.tartachuc.m2:my-custom-packaging:custom</strong><span class="tag">&lt;/<span class="title">package</span><span class="tag_internal">&gt;</span></span>
          <span class="tag">&lt;<span class="title">install</span><span class="tag_internal">&gt;</span></span>org.apache.maven.plugins:maven-install-plugin:install<span class="tag">&lt;/<span class="title">install</span><span class="tag_internal">&gt;</span></span>
          <span class="tag">&lt;<span class="title">deploy</span><span class="tag_internal">&gt;</span></span>org.apache.maven.plugins:maven-deploy-plugin:deploy<span class="tag">&lt;/<span class="title">deploy</span><span class="tag_internal">&gt;</span></span>
        <span class="tag">&lt;/<span class="title">phases</span><span class="tag_internal">&gt;</span></span>
      <span class="tag">&lt;/<span class="title">configuration</span><span class="tag_internal">&gt;</span></span>
    <span class="tag">&lt;/<span class="title">component</span><span class="tag_internal">&gt;</span></span>
  <span class="tag">&lt;/<span class="title">components</span><span class="tag_internal">&gt;</span></span>
<span class="tag">&lt;/<span class="title">component</span><span class="tag_internal">-set&gt;</span></span></code></pre>
<p>Nous avons inséré notre MOJO (org.tartachuc.m2:my-custom-packaging:custom) lors de la phase de packaging. les autres MOJO sont repris des plugins standards de maven.</p>
</li>
<li> Pour installer le plugin dans votre référentiel local, exécuter la commande<br />
<code>mvn install</code></li>
<li> Pour utiliser le packaging nouvellement créé, il faut créer un nouveau projet et déclarer le packaging <em>cust</em> et le plugin créé ci-dessus comme extension du build.
<pre><code class="xml">&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;org.tartachuc.m2&lt;/groupId&gt;
  &lt;artifactId&gt;my-custom-project&lt;/artifactId&gt;
  &lt;packaging&gt;cust&lt;/packaging&gt;
  &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
  &lt;name&gt;my-custom-project uses a custom packaging&lt;/name&gt;
  &lt;dependencies&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;org.springframework&lt;/groupId&gt;
      &lt;artifactId&gt;spring-orm&lt;/artifactId&gt;
      &lt;version&gt;2.5.3&lt;/version&gt;
    &lt;/dependency&gt;
  &lt;/dependencies&gt;
  &lt;build&gt;
    &lt;extensions&gt;
      &lt;extension&gt;
        &lt;groupId&gt;org.tartachuc.m2&lt;/groupId&gt;
        &lt;artifactId&gt;my-custom-packaging&lt;/artifactId&gt;
        &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
      &lt;/extension&gt;
    &lt;/extensions&gt;
  &lt;/build&gt;
&lt;/project&gt;</code></pre>
</li>
<li> Here it is <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/tartachuc.wordpress.com/28/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/tartachuc.wordpress.com/28/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tartachuc.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tartachuc.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tartachuc.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tartachuc.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tartachuc.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tartachuc.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tartachuc.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tartachuc.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tartachuc.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tartachuc.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tartachuc.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tartachuc.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tartachuc.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tartachuc.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.tartachuc.org&amp;blog=23137075&amp;post=28&amp;subd=tartachuc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.tartachuc.org/2008/07/07/creer-un-packaging-maven2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/19b0cd2457923995444d0e963cf799bd?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">trecloux</media:title>
		</media:content>
	</item>
	</channel>
</rss>
