(转)Maven项目标准目录结构
场景:工作中的项目都是使用Maven的目录结构,虽然能够如期的完成开发工作,但是对于一个Maven工程的配置却并不熟悉,这里主要介绍下Maven工程的而目录结构。
1 标准目录结构
src -main
–bin 脚本库
–java java源代码文件
–resources 资源库,会自动复制到classes目录里
–filters 资源过滤文件
–assembly 组件的描述配置(如何打包)
–config 配置文件
–webapp web应用的目录。WEB-INF、css、js等
-test
–java 单元测试java源代码文件
–resources 测试需要用的资源库
–filters 测试资源过滤库
-site Site(一些文档)
target
LICENSE.txt Project’s license
README.txt Project’s readme
工程根目录下就只有src和target两个目录
target是有存放项目构建后的文件和目录,jar包、war包、编译的class文件等。
target里的所有内容都是maven构建的时候生成的
参照:http://breath.iteye.com/blog/1005447
++++++++++++++++++++++++++++++++++++++++++++
1.1 Maven项目的标准目录介绍
Maven提倡使用一个共同的标准目录结构,使开发人员能在熟悉了一个Maven工程后,对其他的Maven工程也能清晰了解。这样做也省去了很多设置的麻烦。
以下的文档介绍是Maven希望的目录结构,并且也是目录创建工程是采用的目录结构。Maven推荐大家尽可能的遵守这样的目录结构。
|
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/webapps |
Web application sources |
|
src/test/java |
Test sources |
|
src/test/resources |
Test resources |
|
src/test/filters |
Test resource filter files |
|
src/site |
Site |
|
LICENSE.txt |
Project's license |
|
README.txt |
Project's readme |
在顶级目录上是工程的描述文件pom.xml(如果使用Ant则还包括其他属性文件,maven.xml或build.xml),另外还包括提供给最终用户的文件,如,README.txt,LICENSE.txt等等。
顶级目录还包括两个子目录:src,target。顶级目录下可能出现的其他目录仅仅是CVS或.svn和其他多模块工程的工程目录,最好不要再有其他目录。
Target目录是所有工程编译构建的输出目录。
Src目录包含所有工程的源码文件,配置文件,资源文件等等。它下面的子目录一般包含main(主要的工程源文件),test(测试文件),site(项目站点文件)。
1.2 项目构建的生命周期的介绍
Maven 2是围绕着构建生命周期概念设计的。这意味着,构建或者发布的过程已经被清晰的定义了。
当我们使用Maven构建工程时,我们只需要了解几个Maven定义好的命令即可,其他的工作则交给POM来完成。
以下给出Maven提供的构建生命周期列表:
|
validate |
validate the project is correct and all necessary information is available. |
|
generate-sources |
generate any source code for inclusion in compilation. |
|
process-sources |
process the source code, for example to filter any values. |
|
generate-resources |
generate resources for inclusion in the package. |
|
process-resources |
copy and process the resources into the destination directory, ready for packaging. |
|
compile |
compile the source code of the project. |
|
process-classes |
post-process the generated files from compilation, for example to do bytecode enhancement on Javaclasses. |
|
generate-test-sources |
generate any test source code for inclusion in compilation. |
|
process-test-sources |
process the test source code, for example to filter any values. |
|
generate-test-resources |
create resources for testing. |
|
process-test-resources |
copy and process the resources into the test destination directory. |
|
test-compile |
compile the test source code into the test destination directory |
|
test |
run tests using a suitable unit testing framework. These tests should not require the code be packaged or deployed. |
|
package |
take the compiled code and package it in its distributable format, such as a JAR. |
|
pre-integration-test |
perform actions required before integration tests are executed. This may involve things such as setting up the required environment. |
|
integration-test |
process and deploy the package if necessary into an environment where integration tests can be run. |
|
post-integration-test |
perform actions required after integration tests have been executed. This may including cleaning up the environment. |
|
verify |
run any checks to verify the package is valid and meets quality criteria. |
|
install |
install the package into the local repository, for use as a dependency in other projects locally. |
|
deploy |
done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects. |
因此,当我们构建一个项目时,只需要了解自己希望做什么,然后执行以上对应的生命周期即可。
例如,我们希望编译我们的工程。在命令行状态下进入到工程的pom.xml文件所在的目录中,使用命令:mvn compile;希望构建打包我们的工程,使用mvn package即可。
当然了,maven的构建生命周期也是可以扩展和自定义的,这里就先不做介绍了。
参照:http://hi.baidu.com/mylovechangchu/blog/item/fbda36da3644a6dfb6fd48d6.html
APACHE原址:http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
1.3 Maven工程添加新文件夹

新建立的Maven工程是没有resources文件夹的,需要自己去创建。
步骤分为两步:
1、在src的main和test目录下分别建立resources文件夹
2、按照下图所示添加即可

(转)Maven项目标准目录结构的更多相关文章
- Maven项目标准目录结构
-----------------------siwuxie095 Maven 项目标准目录结构 1.Maven 项目分为两种 (1)Java 项目 (2)Web 项目 2.对于 Java 项目 其中 ...
- Android MAVEN项目标准目录结构
1.标准目录结构: src -main –bin 脚本库 –java java源代码文件 –resources 资源库,会自动复制到classes目录里 –fi ...
- MAVEN项目标准目录结构 ;
http://blog.csdn.net/lengyue_wy/article/details/6718637 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.标准目录结构: src ...
- MAVEN项目标准目录结构(转)
转自:http://blog.csdn.net/lengyue_wy/article/details/6718637 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.标准目录结构: s ...
- Maven项目的目录结构+maven的安装与配置
1.首先下载maven,然后配置环境变量,在MyEclipse里面配置maven 2.配置maven的pom.xml文件 3.下载和更新资源 右击项目,有一个Maven4Myeclipse,里面有三个 ...
- Maven项目的目录结构
刚接触Maven没多长时间,实习时在的小公司很不规范,所有web项目都是dynamic web project搭建,没有用到项目构建,管理工具,导致了非常多的重复工作与低效. 先来看看Maven的功能 ...
- maven项目eclipse目录结构浅析
maven项目eclipse目录结构浅析 PS:Java Resources是为了方便我们编译,到最后都会编译到 WEB-INF/classes Maven项目的目录结构
- Idea中新建maven项目的目录结构
maven项目的目录结构如下所示 pom.xml文件内容如下所示 <?xml version="1.0" encoding="UTF-8"?> &l ...
- 新建标准mavenWeb工程以及Maven的web应用标准目录结构建议
到现在为止,使用Maven结构的Web工程越来越多,因此在此介绍一下通过Maven来构建项目的相关知识. 文档主要分为两部分: 1.如何通过maven来构建多模块的web项目 ...
随机推荐
- 各种Web漏洞测试平台
Sqli Lab支持报错注入.二次注入.盲注.Update注入.Insert注入.Http头部注入.二次注入练习等.支持GET和POST两种方式. https://github.com/Audi-1 ...
- Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建
http://blog.csdn.net/u013142781/article/details/50380920
- Java线程间通信之wait/notify
Java中的wait/notify/notifyAll可用来实现线程间通信,是Object类的方法,这三个方法都是native方法,是平台相关的,常用来实现生产者/消费者模式.我们来看下相关定义: w ...
- Ubuntu发行版升级
从UK 13.10升级到UK 14.10 方法一: 1.sudo apt-get update 2.sudo update-manager -c -d 3.选择upgrade(升级) 方法二 ...
- Perl正则表达式例子
Perl正则表达式 一.介绍 正则表达式各语言都有自己的规范,但是基本都差不多,都是由元字符的组合来进行匹配:由于Nmap内嵌的服务与版本探测是使用的Perl正则规范,因此此篇博客记录一下Perl正则 ...
- docker在windows,centos中的安装
centos安装方式,采用阿里云的镜像和安装脚本 或者到https://store.docker.com/search?type=edition&offering=community下载相应系 ...
- jquery移出select指定option
$("#selectLine option[value!='']").remove();
- eclipse左侧的导航栏不见了怎么调
点击eclipse上方导航栏的window 然后再点击Reset Perspective 这样左侧的导航栏就出来了
- 既然函数也是对象,那么为什么this不指向普通函数?
function a(){ var b=1; function exp(){ alert(this.b); } exp(); } var b=2; a(); 既然函数是对象,且exp是在a中运行的,那 ...
- CUDA零内存拷贝 疑问考证
今天思考了一下CUDA零内存拷贝的问题,感觉在即将设计的程序中会派上用场,于是就查了一下相关信息. 以下是一些有帮助的链接: cuda中的零拷贝用法--针对二维指针 cuda中的零拷贝用法--针对一维 ...