Maven

Un article de Agora2ia.


apache-maven-project.png


Sommaire

Autres pages

Présentation

Nom Maven
Société Apache
Site http://maven.apache.org/
Version 1.02 (au 05/01/2005)
Prix Gratuit.
Catégorie Outil de construction de projet Java.
Mots clefs Déploiement, livraison, intégration continue.
WikiName EnvironnementDeDeveloppement, Java.


Pourquoi ?

Avantages

  • Rationalise la construction de projet.
  • Evite d'écrire du code : cf. comportement par défaut.
  • Permet de facilement documenter un projet.
  • Facilite la réutilisation.
  • Il existe un comprtement par défaut.


Inconvénients

... Je cherche encore !


Evangélisation

Pour ceux qui voudraient propager "la bonne parole", voire auraient besoin de justifier l'utilisation de Maven, voici quelques liens obtenus sur la mailing-list :

Notions importantes

Repository

  • Distant / local : update automatique, connexion web
  • Différence entre installer et déployer.
  • surcharge pour ignorer (ne plus utiliser de connexion web)
  • SNAPSHOT, deploy, option -o

Dans le build.properties :

maven.home.local = c:\\dev\\maven\\local
maven.repo.remote = file:z:/maven/repository


Les goals

  • plugin:goal
  • alias
<goal name="myGoal">
  <attain goal="myPlugin:myGoal">
...


Plugins


Confirguration

Par l'intermédiaire de fichiers XML :

  1. project.xml : déscripteur du projet, obligatoire.
  2. project.properties : pour surcharger les données, les informations, la paramétrage, facultatif
  3. maven.xml : pour surcharger le comportement, facultatif
  4. build.xml : dans le profile,
Nom Interêt Localisation Format Fonction
project.xml Obligatoire A la racine du projet. XML Déscripteur du projet.
project.properties Facultatif A la racine du projet. Clef/valeur Définir/surcharger les données.
maven.xml Facultatif A la racine du projet. XML Définir/surcharger le comportement.
build.properties Facultatif Dans le profile. Clef/valeur Définir/surcharger les données.


Les tests

Pour ne pas jouer les tests :

-Dmaven.test.skip=true

Pour ignorer les échecs :

-Dfailure.ignore=true


Ant

Le project.xml

  • groupe et groupId
  • artefact et artifactId

Sauvegarde dans le cache : comme en Java, parallèle entre le nommage et le chemin sur le disque.


Autres

  • Génération de fichiers projet/workspace pour les princpaux IDE.
  • Nsis
  • Plugin JNLP/JavaWebStart, signer un jar, certificat.
  • Proxy (JDK 1.3) : maven.proxy
  • maven genApp
  • FAQ et FML


Maven et d'autres langages

Maven et le C/C++

  • For C, you can use maven 1.0.2 + maven native plugin (http://maven.apache.org/reference/plugins/native/index.html)
  • I am not aware of any plugins for C but you could call <ant:exec/> from a custom plugin to execute a compilation script for your language. Your compilation scripts can be packaged within a plugin and executed on any machine that has the appropriate compiler.


I have good success using maven-native-plugin, but

  1. it uses ant's cpp-tasks which is not in active development
  2. cpp-task does not support 'C', but there are uncommitted patches. cpp-task is fairly straight forward to maintain yourself . (which can be bad)
  3. This plugin also not complete yet to handle diffirents native library formats (ie .dll. so. sl. a, etc) but you can fixed it yourself


  • we started with the native plugin for C and C++ and extended it for Fortran and use cross-platform libraries (nar files) and include packages. Have a look at: http://java.freehep.org/freehep-nar-plugin for maven 1.0.2 for now.
  • This looks great since we have to use Visual C++ (or at least the Microsoft SDK) to compile our C code. I haven't found anything about this in the documentation, but can your plugin be configured to produce a dll?


  • Does anyone know if there is a way to read the output from an <ant:exec/> task (which could be multi-line) to determine if the compilation was in fact successful? If not, I'll probably need to write an ant task to do this.
  • You can use the following parameters : spawn=false and failonerror=true, and a couple of others which are documented here: http://ant.apache.org/manual/CoreTasks/exec.html

Ressources

Officiel


Livres

Articles

Présentations


Autres