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:generate
enter
enter
按照模板构建项目,这里报错了,原因是我在原有的demo下重新构建,mvn发现已经有一个pom,所以报错了。
参考: http://blog.csdn.net/lilovfly/article/details/52992633

 

TODO maven学习笔记的更多相关文章

  1. Maven学习笔记-03-Eclipse下maven项目在Tomcat7和Jetty6中部署调试

    现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...

  2. Maven学习笔记-04-Eclipse下maven项目在Tomcat7和Jetty6中部署调试

    现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...

  3. Maven学习笔记—仓库

    Maven仓库 1 什么是Maven仓库 在Maven中,任何一个依赖.插件或者项目构建的输出,都可以成为构件,而Maven通常在某个位置统一的存储所有Maven项目共享的构件,这个统一的位置就是Ma ...

  4. MAVEN学习笔记之Maven插件的应用(4)

    MAVEN学习笔记之Maven插件的应用(4) <build> <pluginManagement> <plugins> <plugin> <gr ...

  5. MAVEN学习笔记之Maven生命周期和插件简介(3)

    MAVEN学习笔记之Maven生命周期和插件简介(3) clean compile site三套生命周期相互独立. clean pre-clean 执行清理前的工作 clean 清理上一次构建生成的所 ...

  6. MAVEN学习笔记之私服Nexus(2)

    MAVEN学习笔记之私服Nexus(2) 私有服务器搭建 Nexus www.snatype.org下载 snatype-work 是默认nexus存储nexus a:将bin添加到环境中 Admin ...

  7. MAVEN学习笔记之基础(1)

    MAVEN学习笔记之基础(1) 0.0 maven文件结构 pom.xml src main java package resource test java package resource targ ...

  8. Maven 学习笔记(二)

    前面一文——Maven 学习笔记(一)中已经提到了 pom 的大部分配置,Maven 本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给创建来完成,每一个任务都会对应一个插件 ...

  9. Maven学习笔记(1)之安装Maven

    此笔记是学习Maven时自己摸索+各种百度而来,并非全部原创,望与各位一同学习,勿拍~勿拍~ 安装步骤 1.下载Maven的最新版本,地址:http://maven.apache.org/downlo ...

随机推荐

  1. Java多线程之静态代理

    package org.study2.javabase.ThreadsDemo.staticproxy; /** * @Date:2018-09-18 静态代理 设计模式 * 1.真实角色 * 2.代 ...

  2. Python——WeRobot(微信公众号开发)

    模板消息接口 ''' 使用规则 1.所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限: 2.需要选择公众账号服务所 ...

  3. 【数学建模】day07-数理统计II

    方差分析和回归分析. 用数理统计分析试验结果.鉴别各因素对结果影响程度的方法称为方差分析(Analysis Of Variance),记作 ANOVA. 比如:从用不同工艺制作成的灯泡中,各自抽取了若 ...

  4. 【深入Java虚拟机】之一:Java内存模型

    [深入Java虚拟机]之:Java内存区域与内存溢出 内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域.Java虚拟机规范将JVM所管理的内存分为以下几个 ...

  5. U盘快速启动热键

    各个品牌电脑U盘快速启动热键如下:

  6. D - Mayor's posters POJ - 2528 离散化+线段树 区间修改单点查询

    题意 贴海报 最后可以看到多少海报 思路 :离散化大区间  其中[1,4] [5,6]不能离散化成[1,2] [2,3]因为这样破坏了他们的非相邻关系 每次离散化区间 [x,y]时  把y+1点也加入 ...

  7. 【支付宝】"验签出错,sign值与sign_type参数指定的签名类型不一致:sign_type参数值为RSA,您实际用的签名类型可能是RSA2"

    问题定位:从描述就可以看的出来了,你现在sign_type是  RSA类型的,要改成跟你现在用的签名类型一致的类型,也就是 要改为 RSA2 PHP为例 // 新版只支持此种签名方式 商户生成签名字符 ...

  8. 【HDU 6171】Admiral(搜索+剪枝)

    多校10 1001 HDU 6171 Admiral 题意 目标状态是第i行有i+1个i数字(i=0-5)共6行.给你初始状态,数字0可以交换上一行最近的两个和下一行最近的两个.求20步以内到目标状态 ...

  9. 洛谷P3740 【[HAOI2014]贴海报】

    (呃...本蒟蒻的第一篇题解qwq)..不废话了讲正题..思路来源于铺地毯(-->传送门)..先算出每一个格子上覆盖的海报并把可见的海报做标记然后算出有多少海报是可见的..但是作为省选题怎么可能 ...

  10. docker命令篇

    基础命令: 镜像: 获取镜像 $ docker pull centos:7 下拉自己仓库镜像,在后面仓库部分会讲到. 列出镜像: $ docker image ls 删除镜像: $ docker im ...