Maven

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值