Maven项目的标准目录结构

Maven提倡使用一个共同的标准目录结构,使开发人员能在熟悉了一个Maven工程后,对其他的Maven工程也能清晰了解。这样做也省去了很多设置的麻烦。 以下的文档介绍是Maven希望的目录结构,并且也是目录创建工程是采用的目录结构。Maven推荐大家尽可能的遵守这样的目录结构。

约定优于配置

Maven使用约定优于配置的原则,如下所示:

目录 目的
${basedir} 存放pom.xml和所有的子目录
${basedir}/src/main/java 项目的java源代码
${basedir}/src/main/resources 项目的资源,比如说property文件,springmvc.xml
${basedir}/src/test/java 项目的测试类,比如说Junit代码
${basedir}/src/test/resources 测试用用的资源
${basedir}/src/main/webapp/WEB-INF web应用文件目录,web项目的信息,比如存放web.xml、本地图片、jsp视图页面
${basedir}/target 打包输出目录
${basedir}/target/classes 编译输出目录
${basedir}/target/test-classes 测试编译输出目录
Test.java Maven只会自动运行符合该命名规则的测试类
~/.m2/repository Maven默认的本地仓库目录位置

在*目录上是工程的描述文件pom.xml。
*目录还包括两个子目录:src,target。*目录下可能出现的其他目录仅仅是CVS或.svn和其他多模块工程的工程目录,最好不要再有其他目录。
Target目录是所有工程编译构建的输出目录。
Src目录包含所有工程的源码文件,配置文件,资源文件等等。它下面的子目录一般包含main(主要的工程源文件),test(测试文件),site(项目站点文件)。
Maven项目的标准目录结构

一个maven项目在默认情况下会产生jar文件,另外,编译后的classes会放在basedir/target/classes下面,jar文件会放在basedir/target/classes下面,jar文件会放在{basedir}/target下面。使用约定优于配置带来最大的好处就是项目的统一,任何人在使用Maven项目的时候,文件的存放位置都是一样的,通用性比较好。这也是为什么我们在用intellij创建一个maven项目的时候,需要配置源文件、资源文件路径的原因。如下图就是常用的几个配置:
Maven项目的标准目录结构