Maven学习-目录结构
2015-10-07 17:23
281 查看
在前一篇文章中,我们介绍了什么是Maven,以及如何用Maven来构建我们的项目。不了解Maven的童鞋,可以看这里Maven学习-入门。在这篇文章中,我们将学习Maven的项目的目录结构相关的内容。
我们知道,Maven约定了一套规则来创建和构建我们的项目。得益于Maven的一些约定,我们只要学习相对很少的命令就可以创建和管理我们的项目。在项目的目录结构上,Maven有一套约定的通用的目录结构。
使用一套通用的目录结构的好处是,可以减少开发人员熟悉不同Maven项目时的认知负担。在使用相同的目录结构的情况下,开发人员可以很快的熟悉一个项目。接下来,我们将开始介绍Maven的通用的目录结构。
通用目录结构
Maven默认约定了一套目录结构,在通过Maven创建了项目以后,项目的目录结构就是以这套目录结构作为模板创建的。${basedir} |-- pom.xml |-- src | |-- main | | `-- java | | `-- resources | | `-- filters | `-- test | | `-- java | | `-- resources | | `-- filters | `-- it | `-- assembly | `-- site `-- LICENSE.txt `-- NOTICE.txt `-- README.txt
src/main/java项目的源代码所在的目录
src/main/resources项目的资源文件所在的目录
src/main/filters项目的资源过滤文件所在的目录
src/main/webapp如果是web项目,则该目录是web应用源代码所在的目录,比如html文件和web.xml等都在该目录下。
src/test/java测试代码所在的目录
src/test/resources测试相关的资源文件所在的目录
src/test/filters测试相关的资源过滤文件所在的目录
上面的目录结构,我们接触的比较多,而下面的这些目录结构,用的相对不是很多:
src/it集成测试代码所在的目录,主要是供别的插件使用的。
src/assembly组件(Assembly)描述符所在的目录
src/site站点文件
LICENSE.txt项目的许可文件
NOTICE.txt该项目依赖的库的注意事项
README.txt项目的readme文件
在一个Maven项目中,在项目根目录下,除了包含了上面约定的目录结构中的部分目录外,还包含了项目描述文件,pom.xml文件。
在根目录下,主要有两个目录,分别是
src和
target目录,除此之外,还会有一些版本控制系统的元数据文件,包括git的
.gitignore或者svn的
.svn。如果一个项目时由多个子项目组成的,那么在该项目的根目录下,还会包含它的子项目的目录。子项目的目录布局,默认也是和上面列出的目录结构一致的。
我们在上一篇文章中以及提及了
target目录,这个目录只要用于存放项目构建的输出文件,比如class文件以及打包后的包文件等。
在
src目录下,包含了项目所有的源代码和资源文件,以及其他项目相关的文件。在该目录的
main目录下,包含了构建该项目的artifact(可以理解为时项目的程序部分)所需的代码和资源,而
test目录包含了测试相关的代码和资源文件。
在目录
main和
test下的子目录结构,是非常相似的,都包含了两个子目录:
java子目录和
resources子目录,这两个目录分别放了源代码和资源文件。不同的是,在
main目录下的这两个目录中放置了项目主程序的代码,而在
test目录下,放置的是测试相关的代码和资源文件。其中
java目录是代码的根目录,在该目录下的子目录,就是Java的包名对应的目录结构了。
现在,我们再来看Maven的目录结构,我们应该就可以清晰地知道每个目录以及其子目录的用途和存放的文件具体做什么的了。
参考
http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html相关文章推荐
- at命令
- C语言:求出0~999之间的所有“水仙花数”并输出
- linux shell脚本 位置参数变量,扫描系统中SUID权限,以免系统为被别人开后门。
- C#——浅谈概括
- linux运维实战练习-2015年9月13日-9月15日课程作业
- Java学习笔记———《http的get请求和post请求及封装的工具类》
- 开源中国 Maven 库使用帮助
- pygame编写的坦克游戏(一)
- iOS开发-【C语言】三目运算符
- 阿里云云服务器CentOS上安装Apache
- cf#324 Div.2 Problem D Dima and Lisa
- [LeetCode-160] Intersection of Two Linked Lists(找到两链表公共交叉点)
- Swift中的可选类型Optional与if let 语法
- -Dmaven.multiModuleProjectDirectory system propery is not set.
- 学习记录——记忆化搜索 A* POJ2449 Remmarguts' Date
- Linux下FTP设置
- 父类子类之间的一个经典题目(有关成员变量何时赋值和在哪里赋值的问题)
- 图片如何通过ps更加清晰
- python爬虫程序,由根目录一直爬各个网址
- java之-命令模式