maven是什么?

我的体会

我理解得maven就是一个构建工具,可以做一些项目得整合操作,我们把一些常见得操作,封装在maven里面,并给它命名成 clean,test,compile,这些步骤都是我们自己在maven里面配置好的,在执行的时候,执行对应的命令,会拉取我们配置的那些操作。就不用我们手动的java -jar,java xxxxxxx testxxxxx 这样用命令行去操作。

maven基本概念

摘录:https://www.tianmaying.com/tutorial/maven-basic

构建是什么呢?简单地说,构建就是软件项目生产的整个过程,比如这个过程应该包括:

  • 文档和代码的生成(有些项目会使用代码自动生成工具,比如数据库访问代码的逆向工程)
  • 代码的编译、测试和打包
  • 打包好的代码进行分发或者部署

上面这三个步骤,都是通过pom.xml来配置的。

POM是Project Object Model的缩写,项目对象模型。

一个项目的代码、测试代码 、资源(比如模板文件和配置文件)、依赖的包等,都是一个项目构建中的关键信息。POM文件就是一个描述这些信息的XML文件。

你执行一条Maven命令的时候,Maven会找到这个POM文件,并在POM文件描述的资源上执行这条命令,这个过程如下图所示:

在上面的图片中,我们看到有这些个重要的概念:

  • 构建生命周期、阶段和目标
  • 依赖
  • 仓库
  • 插件
  • 配置(Profile)

Maven将构建过程分解为:构建生命周期(Build Lifecycle)、阶段(Phase)和目标(Goal)。其中构建周期由多个有序的构建阶段组成,一个构建阶段可以绑定一个或者多个的目标。构建生命周期和阶段只是抽象的概念,不涉及具体的功能。 具体的功能由插件(Plugin)实现。

Maven内置了三个构建生命周期:

  • clean: 主要目的是清理项目
  • default:定义了真正构建时所需要执行的所有步骤,它是生命周期中最核心的部分
  • site: 生成项目站点文档

我们可以执行一个构建生命期,如clean

mvn clean

也可以执行一个构建阶段,如default生命期的install

mvn install

或者构建一个构建目标,如dependency:copy-dependencies

mvn dependency:copy-dependencies

提示

你不能直接执行default生命期,你需要指定default生命期中的一个构建阶段或者构建目标。

构建目标是Maven构建过程中最细化的步骤。一个目标可以与一个或多个构建阶段绑定,也可以不绑定。如果一个目标没有与任何构建阶段绑定,则只能将该目标的名称作为参数传递给mvn命令来执行它。如果一个目标绑定到多个构建阶段,该目标在绑定的构建阶段执行的同时被执行。

default生命期包含了相当多的构建阶段和目标,常用的构建阶段有:

  • validate :验证项目的正确性,以及所有必需的信息都是否都存在。同时也会确认项目的依赖是否都下载完毕
  • compile:编译项目源码
  • test:选择合适的单元测试框架,对源码执行测试,测试代码不需要进行打包
  • package:将编译后的代码以可分发的形式打包,如Jar包,WAR包
  • install :项目打包后安装到本地仓库,安装到本地之后可以作为本地项目的依赖其它
  • deploy:将打包的制品复制到远程仓库,可以进行远程共享

参考:https://www.tianmaying.com/tutorial/maven-demo

maven学习步骤

第一个maven项目

1.安装maven

2.按照基本格式创建project的各个包和java类,projectJava/src/main/java ,Greeter.java,HelloWorld.java

3.在src文件夹下新建并编辑pom.xml

4.cmd进入src所在文件夹,mvn compile 编译(编译时,会读取pom.xml文件),首次编译会下载很多package

5.在java中增加joda的jar包依赖,在pom.xml中编辑,重新mvn compile.

maven的使用

1.clean 清除

2.deploy部署

http://www.yiibai.com/maven/maven_project_documents.html#article-start

这个教程超好用

以下是学习内容

清理目标目录(clean),然后打包项目生成 JAR(包): mvn clean package
重新清理并构建:C:\MVN\consumerBanking>mvn clean compile内部依赖vs外部依赖:
<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>ldapjdk</groupId><artifactId>ldapjdk</artifactId><scope>system</scope><version>1.0</version><systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath></dependency></dependencies>创建应用程序的文档:mvn site,会在D:\testMaven\consumerBanking\target\site下生成程序说明文档
 Archetype 是一个 Maven 插件,其任务是按照其模板来创建一个项目结构。在这里我们将使用 quickstart 原型插件来创建一个简单的 Java应用程序。
C:\MVN>mvn archetype:generateenterenter按照模板构建项目,这里报错了,原因是我在原有的demo下重新构建,mvn发现已经有一个pom,所以报错了。参考: http://blog.csdn.net/lilovfly/article/details/52992633
 

转载于:https://www.cnblogs.com/zhizhiyin/p/6641120.html

TODO maven学习笔记相关推荐

  1. maven学习笔记之IDEA+Maven+Jetty运行一个简单的web项目

    maven学习笔记 一.什么是maven Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Life ...

  2. maven 学习笔记(三)创建一个较复杂的 eclipse+android+maven 工程

    前面maven 学习笔记(二)已经说过了怎样通过插件创建一个简单的工程,有了前面的基础,创建一个较复杂的工程就容易了很多.同样是通过已经有了插件,同样如果插件系统中并未存在,还是需要通过Add Arc ...

  3. Maven学习笔记__上篇

    Maven学习笔记__上篇 本文档基于 尚硅谷视频教程 整理,仅用于个人学习/交流使用. 视频链接:https://www.bilibili.com/video/BV1TW411g7hP 官方资料:链 ...

  4. 黑马程序员Maven学习笔记

    前言 这里是黑马程序员Maven学习笔记分享,这是视频链接. 我还有其它前端内容的笔记,有需要可以查看. 文章目录 前言 基础 Maven简介 Maven是什么 Maven的作用 Maven的下载 M ...

  5. maven学习笔记——尚硅谷

    文章目录 maven学习笔记--尚硅谷 第一章 Maven概述 第一节 为什么要学习Maven 1.Maven 作为依赖管理工具 1.1 jar 包的规模 1.2 jar 包的来源 1.3 jar 包 ...

  6. Maven 学习笔记 - 跳过测试 skipTests

    Maven 学习笔记 - 跳过测试 方案一 idea中操作 方案二 maven命令 方案三 maven打包插件配置 1. 跳过所有测试 2. 详细指定:包含.排除 参考资料 方案一 idea中操作 打 ...

  7. Maven学习笔记,动力节点maven教程随堂笔记(史上最全)

    Maven笔记 这篇笔记的学习视频来自b站动力节点 https://www.bilibili.com/video/BV1dp4y1Q7Hf 笔记中的源码下载地址 动力节点maven资料 第一部分 1. ...

  8. maven 学习笔记(一)eclipse+android+maven

    由于工作需要最近开始接触java,对于这类开源的东西发现居然是第一次接触,里面有太多的东西需要熟悉.其中最著名的就是maven,据说可以使得工程从编译至打包发布,效率提高很多倍.不过使用起来却比较麻烦 ...

  9. maven学习笔记【二】私服Nexus

    Nexus的详细介绍以及安装 简介 Nexus是Maven仓库管理器,也可以叫Maven的私服.Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问.利用Nex ...

最新文章

  1. ORB_SLAM2代码阅读(5)——Bundle Adjustment
  2. React编写一个简易的评论区组件
  3. 小知识点——DataTable把满足条件的一行放在第一行
  4. linux下java命令行参数_Java调用Linux命令行
  5. excel导入mysql命令行_使用命令行将Excel数据表导入Mysql中的方法小结
  6. 通过meta进行重定向
  7. 截至2018年,目前,企业主流的消息中间件有哪些?各有什么优缺点?面试常问 RabbitMQ使用较多
  8. c语言函数调用水仙花数,(指针+函数)的水仙花数怎么写??
  9. [摘录]第2章 中场谈判技巧
  10. ES6的概念以及运行环境~满满的干货
  11. jQuery CSS 操作函数
  12. android mat分析,android内存泄露MAT分析心得与注意点
  13. 图像匹配滤波器 matlab,[转载]匹配滤波器的仿真验证(MATLAB)
  14. 微信小程序的基础实现
  15. @【基础测绘计算】(坐标正反算)
  16. 使用LSTM神经网络+CTC loss识别freetype库生成的不定长验证码
  17. 高速计数器转RS485Modbus RTU模块IBF150
  18. 空间触觉学习法 啥都能同理可证!真的是有手就行
  19. 无法连接虚拟设备sata的原因
  20. 如何获取用户的openid

热门文章

  1. 【实习之T100开发】T100 单档程序开发(2)添加功能
  2. 剑指offer01--二叉树的最近公共祖先
  3. oracle修改用户的登录密码
  4. 走进我的交易室02_交易什么市场
  5. pd.stats.ols.MovingOLS以及替代
  6. IT程序员在北京可以选择哪些国企、央企以及研究所?
  7. Flash务实主义——Loading
  8. 什么叫做项目孵化_什么叫创业孵化服务?
  9. 小米6报价参数_对小米11系列你了解多少,你更看好小米11还是小米11pro
  10. tensorflow sigmoid 如何计算训练数据的正确率_“来自蒙娜丽莎的凝视”— 结合 TensorFlow.js 和深度学习实现...