Maven
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件等等。
常用命令
- 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:清除以前的包后重新打包,跳过测试类
生命周期
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主要做了两件事:
- 统一开发规范与工具
- 统一管理jar包
如果没有Maven,你可能不得不经历下面的过程:
1 如果使用了spring,去spring的官网下载jar包;如果使用hibernate,去hibernate的官网下载Jar包;如果使用Log4j,去log4j的官网下载jar包…
2 当某些jar包有依赖的时候,还要去下载对应的依赖jar包
3 当jar包依赖有冲突时,不得不一个一个的排查
4 执行构建时,需要使用ant写出很多重复的任务代码
5 当新人加入开发时,需要拷贝大量的jar包,然后重复进行构建
6 当进行测试时,需要一个一个的运行…检查
有了Maven,它提供了三种功能:
1 依赖的管理:仅仅通过jar包的几个属性,就能确定唯一的jar包,在指定的文件pom.xml中,只要写入这些依赖属性,就会自动下载并管理jar包。
2 项目的构建:内置很多的插件与生命周期,支持多种任务,比如校验、编译、测试、打包、部署、发布…
3 项目的知识管理:管理项目相关的其他内容,比如开发者信息,版本等等
Maven 的作用如下:
- Maven 统一集中管理好所有的依赖包,不需要程序员再去寻找。
- 对应第三方组件用到的共同 jar,Maven 自动解决重复和冲突问题。
- Maven 作为一个开放的架构,提供了公共接口,方便同第三方插件集成。程序员可以将自己需要的插件,动态地集成到 Maven,从而扩展新的管理功能。
- Maven 可以统一每个项目的构建过程,实现不同项目的兼容性管理。
Maven和SpringBoot的区别
Maven
Maven是一个跨平台的项目管理工具。
Maven是Apache的一个开源项目,主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。不重复发明轮子。
简单、交流与反馈、测试驱动开发(TDD)、十分钟构建、持续集成(CI)、富有信息的工作区。Maven几乎友好的支持任何软件开发方法;Maven帮助快速发布项目。
SpringBoot
SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简化是指简化了Spring众多框架中所需的大量且繁琐的配置文件,所以 SpringBoot是一个服务于框架的框架,服务范围是简化配置文件。
-
独立运行Spring项目
Spring boot 可以以jar包形式独立运行,运行一个Spring Boot项目只需要通过java -jar xx.jar来运行。 -
内嵌servlet容器
Spring Boot可以选择内嵌Tomcat、jetty或者Undertow,这样我们无须以war包形式部署项目。 -
提供starter简化Maven配置
spring提供了一系列的start pom来简化Maven的依赖加载,例如,当你使用了spring-boot-starter-web,会自动加入依赖包 -
自动装配Spring
SpringBoot会根据在类路径中的jar包,类、为jar包里面的类自动配置Bean,这样会极大地减少我们要使用的配置。当然,SpringBoot只考虑大多数的开发场景,并不是所有的场景,若在实际开发中我们需要配置Bean,而SpringBoot灭有提供支持,则可以自定义自动配置。 -
准生产的应用监控
SpringBoot提供基于http ssh telnet对运行时的项目进行监控。 -
无代码生产和xml配置
参考文章:
https://baike.baidu.com/item/MAVEN
https://www.cnblogs.com/best/p/9676515.html
https://blog.csdn.net/soulmate_P/article/details/80780406