Maven peut être utilisé avec n'importe quelle structure de répertoires, mais l'utilisation d'une structure standard présente de nombreux avantages:
artifactId/
Répertoire parent du projet
|-- pom.xml
Le POM.
|-- profiles.xml
Définition de profils locale au projet (et aussi à l'utilisateur et à la machine. ne pas versionner)
|-- LICENSE.txt
Licence du projet (utilisé par le plugin checkstyle
|-- README.txt
Texte d'accueil aux développeurs utilisant directement les sources: précise les caractéristiques du projet.
|-- src/
Les sources du projet: tout ce qui le constitue et qui va être traité lors de la construction.
| |-- main/
Sources principales pour la construction de l'artefact.
| | |-- java/
Racine des sources Java ( et des paquetages). Sera compilé vers target/classes
| | |-- resources/
Ressources: copiées/filtrées vers target/classes
| | |-- webapp/ | | |-- WEB-INF/ | | | `-- web.xml | | `-- index.jsp
Une application web avec la structure standard d'une webapp (pour les projets de type war).
| | |-- assembly/ | | `-- dep.xml
La description des assemblages (distributions binaires et sources, p.ex.) disponibles pour cette application.
| | |-- filters/
Filtres: contient des fichiers properties utilisés pour filtrer les ressources.
| | |-- config/
Fichiers de configuration (??)
| | |-- bash/ | | |-- groovy/ | | |-- prolog/ | | `-- sql/
Racines des sources pour différents langages, différentes technologies.
| |-- site/
Racine de la documentation du projet, servira à produire le site projet après mise en forme des sources[1].
| | |-- apt/ | | | |-- format.apt | | | `-- index.apt | | |-- fml/ | | | `-- faq.fml | | `-- xdoc/ | | `-- xdoc.xml
Documentation aux formats xdoc, apt et fml (format de FAQ).
| | |-- resources/ | | | |-- css/ | | | |-- img/ | | | `-- js/
Ressources du site: copiées verbatim dans target/site
| | |-- site.xml
Descripteur de la structure du site: définit le menu des différentes pages et la navigation dans le site.
| `-- test/
Répertoire source pour les tests du projet.
| |-- java/ | |-- resources/ | |-- filters/ | |-- perl/ | |-- haskell/ | `-- python/
Structure identique à la structure principale mais pour les tests unitaires. Ces éléments ne sont pas contribués à l' artefact final mais servent uniquement à l'exécution des tests.
`-- target/
Répertoire racine pour tout ce qui est généré par maven.
|-- artifactId-version.jar
L'artefact généré (but package
|-- classes/ |-- test-classes/
Le résultat de la compilation et de la copie des ressources pour le répertoire principal (resp. répertoire de test).
|-- exported-pom.xml
Le POM consolidé (c'est-à-dire avec tous les paramètres par défaut rendu explicites). C'est ce POM qui est mis dans l'archive de l'artefact.
|-- site/
Le stite du projet.
|-- surefire-reports/
Le résultat de l'exécution des tests.
Cette structure peut-être personnalisée par exemple au moyen d'un archétype
Footnotes: [1] A priori, tous les fichiers, quels que soient leurs suffixes, produisent des fichiers
.html, ce qui implique que les noms debase soient uniques au travers des différentes sources.