Memento Maven

Table des matières :

Installation de Maven

  • Download binary installation
  • Unzip it
  • Create the variable MAVEN_HOME with the path of the maven
  • Add the path $MAVEN_HOME/bin to your PATH

Répertoires repository et plugins (maven 1.0-beta10)

Maven utilise un système pour télécharger automatiquement les composants qu'il a besoin.
Par exemple, à la première exécution de maven, maven télécharge plusieurs plugins requis. Il se peut que cela représente plusieurs meg et cela peut prendre un certain temps avec une connexion modem.

Attention entre la version 1.0-beta9 et 1.0-beta10 la structure de ces répertoires a changé.
Depuis la version 1.0-beta10, les répertoires repository et plugins se trouvent dans ${user.home}/.maven au lieu de ${maven.home}.

Pour ajouter vos propres dépendances, créer un répertoire dans repository en respectant la structure suivante :
  ${user.home}/.maven
	|- repository
	   |- my-project
	       |- jars
	           |- my-project1.0.jar
	           |- my-project1.1.jar

Source : Loribel

Configurer maven avec un serveur proxy (maven 1.0-beta10)

Créer le fichier ${user.home}/build.properties ou ajouter le contenu suivant.
Sous Windows ${user.home} = "C:\Documents and Settings\xxx", xxx étant votre login.

## ---------------------------------------------------------- ## ${user.home}/build.properties ## ---------------------------------------------------------- maven.proxy.host = xxx.xxx.com maven.proxy.port = 8080 #maven.proxy.username = username #maven.proxy.password = password
Source : Loribel

Utiliser Maven (maven 1.0-beta10)

  • Créer un fichier project.xml pour décrire le projet (voir détails).
  • Ajouter vos dépendances si besoin dans le répertoire repository (voir détails}.
  • Lancer maven site:generate dans le répertoire où se trouve project.xml pour générer le site.

Source : Loribel

Structure du fichier 'project.xml'

<?xml version="1.0"?> <project> <pomVersion>3</pomVersion> <name>XXX</name> <id>xxx-xx</id> <currentVersion>1.0</currentVersion> <organization> <name>XXX</name> <url>http://xxx.com</url> </organization> <inceptionYear>2003</inceptionYear> <package>xxx.xxx</package> <shortDescription>...</shortDescription> <description>...</description> <url>...</url> <siteAddress>...</siteAddress> <siteDirectory>...</siteDirectory> <distributionDirectory>...</distributionDirectory>
<developers> <developer> <name>xxx</name> <id>xxx</id> <email>xxx</email> <organization>xxx</organization> </developer> ...
</developers>
<dependencies> <dependency> <id>junit</id> <version>3.7</version> <url>http://www.junit.com/</url> </dependency> ...
</dependencies>
<build> <sourceDirectory>src</sourceDirectory> <unitTestSourceDirectory>test</unitTestSourceDirectory> <integrationUnitTestSourceDirectory/> <aspectSourceDirectory />
<!-- Unit test cases --> <unitTest> <includes> <include>**/*Test.java</include> </includes> </unitTest>
<!-- Integration unit test cases --> <integrationUnitTest/>
<jars> </jars> </build>
<reports> <report>maven-jdepend-plugin</report> <report>maven-checkstyle-plugin</report> <report>maven-javadoc-plugin</report> <report>maven-jxr-plugin</report> <report>maven-junit-report-plugin</report> <report>maven-pmd-plugin</report> <report>maven-tasklist-plugin</report> <report>maven-changes-plugin</report> <report>maven-linkcheck-plugin</report> <report>maven-changelog-plugin</report> <report>maven-developer-activity-plugin</report> <report>maven-file-activity-plugin</report> <report>maven-license-plugin</report> </reports>
</project>

Structure du fichier 'maven.xml'

<project xmlns:m="maven" xmlns:j="jelly:core" xmlns:u="jelly:util"> <preGoal name="xdoc:jelly-transform"> <attainGoal name="faq"/> </preGoal> </project>

Utilisation d'une task Ant avec Maven

Il suffit d'utiliser goal au lieu de target et attainGoal au lieu de antcall dans le fichier maven.xml.
Ensuite on peut appeler une tache directement avec maven xxx (xxx etant le nom de la tache).

<goal name="copy:ressources"> <copy todir="./target/classes"> <fileset dir="./src"> <exclude name="**/*.java"/> </fileset> </copy> </goal> <goal name="generate:all"> <attainGoal name="copy:ressources"/> <attainGoal name="site:generate"/> </goal>
maven copy:ressources maven generate:all
Source : Loribel

Ajouter une FAQ : xdocs/faq.fml

Pour utiliser une faq, il faut :
  • Créer un fichier xdocs/faq.fml (fichier xml)
  • Ajouter un tag preGoal dans maven.xml
  • Ajouter un lien dans le menu avec le fichier navigation.xml voir details...

faq.fml

<?xml version="1.0" encoding="ISO-8859-1"?> <faqs title="Frequently Asked Questions"> <part id="xxx"> <title>XXX</title> <faq id="xxx"> <question>xxx</question> <answer>xxx</answer> </faq> ...
</part> ...
</faqs>

maven.xml

<preGoal name="xdoc:jelly-transform"> <attainGoal name="faq"/> </preGoal>

Modifier le menu : xdocs/navigation.xml

Pour modifier le menu dans le site généré, il suffit de créer un fichier XML 'navigation.xml' dans le répertoire xdocs.
De plus, tous les fichiers XML contenus dans le répertoire xdocs sont automatiquement transformés en html selon la norme xdocs.

<?xml version="1.0" encoding="ISO-8859-1"?> <project name="XXX"> <title>XXX</title> <body> <!-- footer will be placed above the (c) --> <footer> <a href="http://xxx.com"> <img src="http://xxx.com/img.gif" border="0" alt="logo" /> </a> </footer> <links> <item name="XXX1" href="http://www.xxx.com" /> <item name="XXX2" href="http://www.xxx.com" /> </links> <organizationLogo href="/img/logo.gif">XXX</organizationLogo> <menu name="Overview"> <item name="FAQ" href="/faq.html" /> <item name="Tasks" href="/tasks.html" /> </menu> <menu name="XXX"> <item name="xxx1" href="/xxx1.html" /> <item name="xxx2" href="/xxx2.html" /> </menu> </body> </project>

Structure des fichiers XML : xdocs

Par défaut, tous les fichiers XML du répertoire xdocs sont automatiquement transformés en html.
Ils doivent être au format xdocs qui définit une série de tag très simples :
  • section [@name] : définit une section
    • source : formate le contenu dans un cadre avec une police de type courrier
    • subsection [@name] : définit une sous section
Le contenu de section, subsection, source doit être au format XHTML. Par exemple on doit utiliser les tags <br /> au lieu de <br>. En effet le fichier doit être un fichier XML valide.

<?xml version="1.0"?> <document> <properties> <author email="xxx@xxx.com">XXX</author> <author email="xxx@xxx.com">XXX</author> <title>XXX</title> </properties> <meta name="keyword" content="xxx, xxx" />
<body> <section name="Section 1"> code html...
</section> <section name="Section 2"> code html avec source : <source> Anything within this tag is rendered as a "box" with blue lines and <pre></pre> tags around it.
</source> </section> <section name="Section avec sous sections"> <subsection name="Subsection 1"> html content </subsection> </section> </body> </document>

Tips : Maven - Out of Memory

Lorsque Maven est utilisé pour la construction d'un gros projet, il n'est pas rare de subir des problèmes de mémoire.
Carlos Sanchez a publié 2 tips sur son blog:
  • Fixer la variable d'environnement MAVEN_OPTS avec comme valeur -Xmx512m
  • Lancer les tests unitaires dans un thread séparé en allouant un espace mémoire suffisant. C'est réalisé en fixant les propriétés suivantes dans le fichier project.properties
Par exemple:
maven.junit.fork = true
maven.junit.jvmargs = -Xmx256m



Article extrait du site Loribel.com.
https://loribel.com/info/memento/maven.html