Projets "simples" J2SE
Comme l'a expliqué cletus, la structure du répertoire des sources est directement équivalente à la structure des paquets, et cela est essentiellement intégré à Java. Tout le reste est un peu moins clair.
Beaucoup de projets simples sont organisés à la main, ce qui permet aux gens de choisir une structure qui leur convient. Ce qui est souvent fait (et cela se reflète également dans la structure des projets dans Eclipse, un outil Java très dominant), c'est que l'arbre des sources commence dans un répertoire appelé src
. Vos fichiers sources sans paquetage se trouveront directement dans src, et votre hiérarchie de paquetage, qui commence généralement par un fichier com
serait également contenu dans le répertoire src
. Si vous CD
a la src
avant de lancer l'application javac
votre compilateur compilé .class
se retrouveront dans la même structure de répertoire, chaque fichier .class se trouvant dans le même répertoire et à côté de son fichier .class. .java
archivo.
Si vous avez beaucoup de fichiers sources et de classes, vous voudrez les séparer les uns des autres pour réduire le désordre. L'organisation manuelle et Eclipse place souvent un bin
o classes
parallèle à src
de sorte que les fichiers .class se retrouvent dans une hiérarchie qui reflète celle de l'entreprise. src
.
Si votre projet comporte un ensemble de .jar
pour délivrer les capacités des bibliothèques tierces, puis un troisième répertoire, typiquement lib
est placé parallèlement à src
y bin
. Tout dans lib
doit être placé dans le classpath pour la compilation et l'exécution.
Enfin, il y a tout un tas de choses qui sont plus ou moins facultatives :
- docs en
doc
- ressources en
resources
- données dans
data
- configuration en
conf
...
Vous comprenez l'idée. Le compilateur ne se soucie pas de ces répertoires, ce sont juste des moyens pour vous de vous organiser (ou de vous embrouiller).
Projets J2EE
J2EE est à peu près l'équivalent d'ASP.NET, c'est un cadre massif (standard) pour organiser les applications Web. Bien que vous puissiez développer votre code pour les projets J2EE comme vous le souhaitez, il existe une norme ferme pour la structure qu'un conteneur Web attendra de votre application. Et cette structure a tendance à se refléter un peu dans la mise en page de la source également. Voici une page qui détaille les structures de projet pour les projets Java en général (elles ne correspondent pas vraiment à ce que j'ai écrit ci-dessus) et pour les projets J2EE en particulier :
http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
Projets Maven
Maven
est un outil de construction de projet très polyvalent. Personnellement, mes besoins en matière de construction sont bien couverts par ant
ce qui correspond à peu près à nmake
. Maven, quant à lui, est une gestion de construction complète du cycle de vie avec une gestion des dépendances ajoutée. Les librairies et les sources de la plupart du code dans le monde Java sont librement disponibles sur le net, et maven, si on le lui demande gentiment, ira les chercher pour vous et ramènera tout ce dont votre projet a besoin sans que vous ayez besoin de le lui dire. Il gère également un petit dépôt pour vous.
L'inconvénient de cette créature très industrieuse est qu'elle est très fasciste en matière de structure de projet. Vous le faites à la manière de Maven ou pas du tout. En vous imposant sa norme, Maven parvient à rendre les projets du monde entier un peu plus similaires en termes de structure, plus faciles à gérer et plus faciles à construire automatiquement avec un minimum de données.
Si vous optez un jour pour Maven, vous pouvez cesser de vous soucier de la structure du projet, car il ne peut y en avoir qu'une seule. C'est celle-là : http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html