Maven 标准目录结构

Maven 标准目录结构

好的目录结构可以使开发人员更容易理解项目,为以后的维护工作也打下良好的基础。Maven2根据业界公认的最佳目录结构,为开发者提供了缺省的标准目录模板。Maven2的标准目录结构如下:

  

使用目录模板,可以使 pom.xml 更简洁。因为 Maven2 已经根据缺省目录,预定义了相关的动作,而无需人工的干预。以 resources 目录为例:

  • src/main/resources,负责管理项目主体的资源。在使用Maven2执行compile之后,这个目录中的所有文件及子目录,会复制到target/classes目录中,为以后的打包提供了方便。
  • src/test/resources,负责管理项目测试的资源。在使用Maven2执行test-compile之后,这个目录中的所有文件及子目录,会复制到target/test-classes目录中,为后续的测试做好了准备。

这些动作在 Maven1 中,是需要在 maven.xml 中使用<preGoal>或<postGoal>来完成的。如今,完全不需要在pom.xml中指定就能够自动完成。在src和test都使用resources,方便构建和测试,这种方式本就已是前人的经验。通过使用Maven2,使这个经验在开发团队中得到普及。

创建标准目录模板,可以通过如下命令:

mvn archetype:create -DgroupId=com.codeline.commons -DartifactId=codelineCommons

groupId和artifactId的含义与Maven1中的含义一样,参数artifactId的值会作为项目根目录的名字。除了建立相应的目录之外,Maven2还会创建缺省的pom.xml。

Maven2也考虑到:不同类型的项目需要拥有不同的目录结构。如创建web项目,可以使用命令:

mvn archetype:create -DgroupId=com.mycompany.app
-DartifactId=my-webapp
-DarchetypeArtifactId=maven-archetype-webapp

Maven 生命周期

Maven生命周期已经在另一篇博客中介绍过了(http://www.cnblogs.com/haippy/archive/2012/07/04/2576453.html),这里引用IBM developerworks 的文章再一次讨论Maven 的生命周期。

在Maven2中有了明确的生命周期概念,而且都提供与之对应的命令,使得项目构建更加清晰明了。主要的生命周期阶段:

  • validate,验证工程是否正确,所有需要的资源是否可用。
  • compile,编译项目的源代码。
  • test-compile,编译项目测试代码。
  • test,使用已编译的测试代码,测试已编译的源代码。
  • package,已发布的格式,如jar,将已编译的源代码打包。
  • integration-test,在集成测试可以运行的环境中处理和发布包。
  • verify,运行任何检查,验证包是否有效且达到质量标准。
  • install,把包安装在本地的repository中,可以被其他工程作为依赖来使用
  • deploy,在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
  • generate-sources,产生应用需要的任何额外的源代码,如xdoclet。

如果要执行项目编译,那么直接输入:mvn compile即可,对于其他的阶段可以类推。阶段之间是存在依赖关系(dependency)的,如test依赖test-compile。在执行mvn test时,会先运行mvn test-compile,然后才是mvn test。

时间: 2024-07-29 07:24:48

Maven 标准目录结构的相关文章

阶段2 JavaWeb+黑马旅游网_15-Maven基础_第3节 maven标准目录结构和常用命令_07maven常用命令

以给的hellowordl的的代码为例. src/main/java下,这是主业务逻辑代码 里面的内容只有一个jsp的跳转 测试包下: 里面很简单的就输出了一句话 复制项目的目录 先cd进入复制的这个目录 然后输入d盘.这样就已经进去到羡慕的目录了 mvn clean 把target目录删掉. mvn complie complie是编译的意思. 生成 为了target文件夹 target目录 classes编译后的java文件存放的目录. 可以mvn complie是对main下的java代码

MAVEN项目标准目录结构 ;

http://blog.csdn.net/lengyue_wy/article/details/6718637 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.标准目录结构: src -main –bin 脚本库 –java java源代码文件 –resources 资源库,会自动复制到classes目录里 –filters 资源过滤文件 –assembly 组件的描述配置(如何打包) –config 配置文件       – webapp web应用的目录.WEB-INF.css.j

新建标准mavenWeb工程以及Maven的web应用标准目录结构建议

到现在为止,使用Maven结构的Web工程越来越多,因此在此介绍一下通过Maven来构建项目的相关知识.     文档主要分为两部分:       1.如何通过maven来构建多模块的web项目       2.标准的maven项目的目录结构:(springMVC+mybatis).     1.如何通过maven来构建多模块的web项目       1)创建父工程 创建完成之后结构如下: 修改POM.xml文件,内容如下: <project xmlns="http://maven.apa

(转)Maven项目标准目录结构

场景:工作中的项目都是使用Maven的目录结构,虽然能够如期的完成开发工作,但是对于一个Maven工程的配置却并不熟悉,这里主要介绍下Maven工程的而目录结构. 1 标准目录结构 src -main –bin 脚本库 –java java源代码文件 –resources 资源库,会自动复制到classes目录里 –filters 资源过滤文件 –assembly 组件的描述配置(如何打包) –config 配置文件 –webapp web应用的目录.WEB-INF.css.js等 -test

Android MAVEN项目标准目录结构

1.标准目录结构: src -main      –bin 脚本库      –java java源代码文件      –resources 资源库,会自动复制到classes目录里      –filters 资源过滤文件      –assembly 组件的描述配置(如何打包)      –config 配置文件      –webapp web应用的目录.WEB-INF.css.js等  -test      –java 单元测试java源代码文件      –resources 测试需要

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

maven项目目录结构

1.创建maven项目目录结构 创建Maven项目必须按照maven项目约定的目录结构进行 除了mavenDemo是可变的之外,其余的目录结构,以及文件夹名称,pom.xml名称必须严格符合maven标准 原文地址:https://www.cnblogs.com/cdcr/p/9657093.html

Linux 标准目录结构

Linux 标准目录结构 初学Linux,首先需要弄清Linux 标准目录结构 / root --- 启动Linux时使用的一些核心文件.如操作系统内核.引导程序Grub等. home --- 存储普通用户的个人文件 ftp --- 用户所有服务 httpd samba user1 user2 bin --- 系统启动时需要的执行文件(二进制) sbin --- 可执行程序的目录,但大多存放涉及系统管理的命令.只有root权限才能执行 proc --- 虚拟,存在linux内核镜像:保存所有内核

Eclipse中创建标准web工程以及标准目录结构说明

最近公司有个Web项目,项目结构如下: 虽然运行没有错,但是实在是别扭,标准的web应用一般不采用这种结构: 因此总结一下:     1.如何在Eclipse中创建一个标准的Web应用.     2.标准Web应用推荐的目录结构.   第一:如何在Eclipse中创建一个标准的web应用:(假设项目名称为:myweb) 1) PS:projectname一般全小写字母,最好不要出现数字和大写字母. 2) PS:default output flolder要根据project_name修改. 3)