1.1 参考URL
http://www.cnblogs.com/xdp-gacl/tag/Maven%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/
1.2 Maven是什么
Maven 是一个项目管理工具,它包含了
一个项目对象模型 (Project Object Model),
一组标准集合,
一个项目生命周期(Project Lifecycle),
一个依赖管理系统(Dependency Management System),
和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。
Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下,这些目录都有明确的约定。
Maven的每一个动作都拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程。只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮我们处理其他事情
使用Maven可以进行项目高度自动化构建,依赖管理(这是使用Maven最大的好处),仓库管理。
1.1 Maven工程目录结构
1.1 Maven工具包目录结构
bin:含有mvn运行的脚本
boot:含有plexus-classworlds类加载器框架
conf:含有settings.xml配置文件
lib:含有Maven运行时所需要的java类库
LICENSE.txt, NOTICE.txt, README.txt:针对Maven版本,第三方软件等简要介绍
1.1 Maven命令
mvn compile
mvn clean
mvn package
mvn install =mvn compile+test+package
mvn clean compile ---- 先清理再编译
1.1 创建Java工程
方法1:使用mvn archetype:generate命令,如下所示:
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
方法2:使用mvn archetype:create命令,如下所示(推荐,速度快):
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
1.1 构建Java WEB工程
方法1:使用mvn archetype:generate命令,如下所示:
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-WebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
方法2:使用mvn archetype:create命令,如下所示(推荐,速度快):
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=myWebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
生成的目录结构如下
1.1 创建其他工程说明
mvn archetype:create或者mvn archetype:generate 固定写法
-DgroupId 组织标识(包名)
-DartifactId 项目名称
-DarchetypeArtifactId 指定ArchetypeId,
maven-archetype-quickstart,创建一个Java Project;
maven-archetype-webapp,创建一个Web Project
-DinteractiveMode 是否使用交互模式
archetype是mvn内置的一个插件,create任务可以创建一个java项目骨架,DarchetypeArtifactId是可用的mvn项目骨架,目前可以使用的骨架有:
maven-archetype-archetype
maven-archetype-j2ee-simple
maven-archetype-mojo
maven-archetype-portlet
maven-archetype-profiles (currently under development)
maven-archetype-quickstart
maven-archetype-simple (currently under development)
maven-archetype-site
maven-archetype-site-simple
maven-archetype-webapp
每一个骨架都会建相应的目录结构和一些通用文件,最常用的是maven-archetype-quickstart和maven-archetype-webapp骨架。
1.2 Pom.xml文件说明
1.2.1 项目坐标说明
- groupId:组织标识(包名)
- artifactId:项目名称
- version:项目的当前版本
- packaging:项目的打包方式,最为常见的jar和war两种
1.1.1 依赖配置
依赖范围scope用来控制依赖和编译,测试,运行的classpath的关系. 主要的是三种依赖关系如下:
1.compile: 默认编译依赖范围。对于编译,测试,运行三种classpath都有效
2.test:测试依赖范围。只对于测试classpath有效
3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api
4.runtime:运行时提供。例如:jdbc驱动
1.1 生命周期
Maven生命周期就是为了对所有的构建过程进行抽象和统一,包括项目清理,初始化,编译,打包,测试,部署等几乎所有构建步骤。
Maven有三套相互独立的生命周期:
1)Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
2)Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
3)Site Lifecycle 生成项目报告,站点,发布站点。
每套生命周期包含有若干个阶段。而平时在命令行输入的命令对应于一个特定的阶段。
Clean生命周期一共包含了三个阶段:
1)pre-clean 执行一些需要在clean之前完成的工作
2)clean 移除所有上一次构建生成的文件
3)post-clean 执行一些需要在clean之后立刻完成的工作
"mvn clean" 中的clean就是上面的clean。在一个生命周期中,运行某个阶段的时候,它之前的所有阶段都会被运行,也就是说,"mvn clean"等同于 mvn pre-clean clean ,如果我们运行 mvn post-clean ,那么 pre-clean,clean 都会被运行。这是Maven很重要的一个规则,可以大大简化命令行的输入。
其他的声明周期(Default Lifecycle、Site Lifecycle)跟上面类似,不再解释。
1.2 如何确定依赖JAR的ID信息
http://www.mvnrepository.com站点提供了针对 Maven 仓库的搜索接口,你可以用它来搜索依赖。样例如下: