Standard Directory Layout (Maven)

Good info here.

Having a common directory layout would allow for users familiar with one project to immediately feel at home in another project. The advantages are analogous to adopting a site-wide look-and-feel.

Please try to conform to this structure as much as possible:

Directory Description
src/main/java Application/Library sources
src/main/resources Application/Library resources
src/main/filters Resource filter files
src/main/assembly Assembly descriptors
src/main/config Configuration files
src/main/webapp Web application sources
src/test/java Test sources
src/test/resources Test resources
src/test/config Configuration files
src/test/filters Usage resource filter files
src/usage/java Usage sources
src/usage/resources Usage resources
src/usage/config Usage Configuration files
src/site Site
LICENSE.txt Project's license
README.txt Project's readme

The structure is loosly based on the MAVEN structure at: http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

Another good site is: http://cvs.peopleware.be/training/maven/maven2/standardDirLayout.html

artifactId/
project directory
|- .cvsignore
contains target, profiles.xml
|- pom.xml
POM
|- profiles.xml
local, user and project dependent profile definitions; this should not be version controlled
|- LICENSE.txt
license of the project
|- README.txt
welcome to the reader
|- src/
original material; this should be version controlled
||- main/
the original material for the artifact
|||- java/
root of main Java source; wil be compiled into target/classes
|||- resources/
main Java resources; will be copied into target/classes
|||- webapp/
|||- WEB-INF/
|||`- web.xml
||`- index.jsp
web application with standard web application structure
|||- assembly/
||`- dep.xml
assembly descriptor for maven-assembly-plugin
|||- filters/
resource filter properties files for main Java resources
|||- config/
configuration files for the artifact
|||- bash/
|||- groovy/
|||- prolog/
||`- sql/
sources in other technologies for the artifact
||- site/
project documentation in different formates; mvn site will produce a project website in target/site based on this material and structure (Doxia)
|||- apt/
||||- format.apt
|||`- index.apt
documentation in APT format (wiki-like HTML generation)
 
 
|||- fml/
|||`- faq.fml
documentation in FML format (XML based FAQ format)
 
 
|||- resources/
||||- css/
||||- img/
|||`- js/
site resources; will be copied into target/site as-is
 
 
|||- site.xml
site descriptor: description of site structure; this will generate menus
||`- xdoc/
||`- xdoc.xml
documentation in Xdoc format (XML based HTML generation; maven 1 legacy)
|`- test/
original material to test the artifact
||- java/
root of Java source for testing the artifact; usually JUnit test classes; will be compiled into target/test-classes
||- resources/
resources for testing the artifact; will be copied into target/test-classes
||- filters/
resource filter properties files for resources for testing the artifact
||- perl/
||- haskell/
|`- python/
sources in other technologies for testing the artifact
 
 
 
`- target/
generated material; this should not be under version control
|- artifactId-version.jar
generated artifact
|- classes/
result of compilation of src/main/java and copy of src/main/resources
|- exported-pom.xml
consolidated POM
|- javadoc/
javadoc of src/main/java
|- site/
project site generated by mvn site
|- surefire-reports/
test reports
|- test-classes/
result of compilation of src/test/java and copy of src/test/resources
`- announcement/
`- announcement.vm
org.codehaus.mojo:changelog-maven-plugin generates announcement mail here