Apache Maven
- 简介
- 安装
- Eclipse中安装内置的Maven插件
- Maven官网下载,直接安装在电脑上
- Maven安装目录结构
- bin目录
- boot目录
- conf目录
- lib目录
- Maven生命周期与命令
- Maven生命周期
- clean:清理
- cleanup:清理所有
- default:默认
- site:站点
- Maven命令
- 使用用途
- 项目管理
- 引入依赖、管理JAR包
- 管理项目报告
- 自动构建
- 生成站点
- 打包
- 与Ant的区别
简介
Apache Maven是一个面向项目(特别是Java编程)的开源的项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(Project Object Model,POM)概念,Maven利用一个中央信息片断,就能管理一个项目的构建、报告和文档等步骤。
Maven这个单词来自于意第绪语(犹太语),意为知识的积累。
Maven可以用来构建
Maven包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System)和用来运行【定义在生命周期阶段(phase)中插件(plugin)目标(goal)】的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
安装
Eclipse中安装内置的Maven插件
使用eclipse中内置的maven插件,通过Windows——Preferences——Maven进入maven插件的各项设置页面,补入此篇博客。
安装后,使用mvn -v
进行测试,失败。查询原因时,看到此篇博客,按其所说,测试Java -version
提示无响应,确认jdk出现异常后重装JDK。
安装后,测试mvn -v
成功,如下图所示,安装完毕。
Maven官网下载,直接安装在电脑上
Maven安装目录结构
bin目录
该目录包含了mvn运行的脚本,这些脚本用来配置Java命令;
boot目录
只包含一个文件:plexus-classworlds-2.5.2.jar,是一个类加载器框架,相当于java类的默认加载器。
conf目录
包含了一个重要的配置文件settings.xml
,据此可以全局定制Maven的行为。
lib目录
该目录包含了所有Maven运行时需要的Java类库。
LICENSE.txt
NOTICE.txt
记录了Maven包含的第三方软件。
README.txt
Maven生命周期与命令
Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
Maven生命周期
Maven的生命周期是为了对所有的构建过程进行抽象,便于统一。
clean:清理
cleanup:清理所有
此生命周期旨在给工程做清理工作,它主要包含以下阶段:
pre-clean - 执行项目清理前所需要的工作。
clean - 清理上一次build项目生成的文件。
post-clean - 执行完成项目清理所需的工作.
default:默认
validate - 验证项目是否正确且所有必要的信息都可用。
initialize - 初始化构建工作,如:设置参数,创建目录等。
generate-sources - 为包含在编译范围内的代码生成源代码.
process-sources - 处理源代码, 如过滤值.
generate-resources -
process-resources - 复制并处理资源文件,至目标目录,准备打包。
compile - 编译项目中的源代码.
process-classes - 为编译生成的文件做后期工作, 例如做Java类的字节码增强.
generate-test-sources - 为编译内容生成测试源代码.
process-test-sources - 处理测试源代码。
generate-test-resources -
process-test-resources - 复制并处理资源文件,至目标测试目录。
test-compile - 将需测试源代码编译到路径。一般来说,是编译/src/test/java目录下的java文件至目标输出的测试classpath目录中。
process-test-classes -
test - 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
prepare-package -
package - 接受编译好的代码,打包成可发布的格式,如 JAR 。
pre-integration-test -
integration-test - 按需求将发布包部署到运行环境。
post-integration-test -
verify -
install -将包安装到本地仓库,给其他本地引用提供依赖。
deploy -完成集成和发布工作,将最终包复制到远程仓库以便分享给其他开发人员。
site:站点
pre-site - 执行一些生成项目站点前的准备工作。
site - 生成项目站点的文档。
post-site - 执行需完成站点生成的工作,如站点部署的准备工作。
site-deploy - 向制定的web服务器部署站点生成文件。
Maven命令
mvn archetype:generate 创建Maven项目
mvn compile 编译源代码
mvn deploy 发布项目
mvn test-compile 编译测试源代码
mvn test 运行应用程序中的单元测试
mvn site 生成项目相关信息的网站
mvn clean 清除项目目录中的生成结果
mvn package 根据项目生成的jar
mvn install 在本地Repository中安装jar
mvn eclipse:eclipse 生成eclipse项目文件
mvnjetty:run 启动jetty服务
mvntomcat:run 启动tomcat服务
mvn clean package -Dmaven.test.skip=true:清除以前的包后重新打包,跳过测试类
使用用途
项目管理
引入依赖、管理JAR包
管理项目报告
自动构建
比如执行run as Maven install
操作时,会将会把父工程与所有子工程都打包安装到本地仓库。
生成站点
打包
Maven可以将项目打包成开发人员指定的类型,用于部署到web容器,Maven还可以将项目打包到仓库中,方便项目的相互依赖。
在pom.xml
中指定要打包成的类型,如果未指定,则默认为.jar。
打包过程为:在项目根目录下,执行命令mvn clean package,然后可以在./target/目录下找到刚刚打包生成的jar包。