Maven入门
来源:互联网 发布:类似金数据表单工具 编辑:程序博客网 时间:2024/05/13 11:18
什么是Maven?
Maven是一个用于项目构建的工具,被认为是Ant的替代品或者继任者。事实上Maven的功能要远远超出Ant,它不仅仅提供编译的脚本,更是在整 个项目周期中提供测试,发布,文档生成等功能,并且有着独特的依赖性管理方法。它提供了三种功能:
- 依赖的管理:仅仅通过jar包的几个属性,就能确定唯一的jar包,在指定的文件pom.xml中,只要写入这些依赖属性,就会自动下载并管理jar包。
- 项目的构建:内置很多的插件与生命周期,支持多种任务,比如校验、编译、测试、打包、部署、发布…
- 项目的知识管理:管理项目相关的其他内容,比如开发者信息,版本等等。
maven最突出的特点是不需要上网单独下载jar包,只需要在配置文件pom.xml中配置jar包的依赖关系,就可以自动的下载jar包到我们的项目中。这样,别人开发或者使用这个工程时,不需要来回的拷贝jar包,只需要复制这个pom.xml就可以自动的下载这些jar包。
什么是POM?
POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml(Ant是通过build.xml执行构建任务的)。在Maven中,当谈到Project的时候,不仅仅是一堆包含代码的文件。一个Project往往包含一个配置文件,包括了与开发者有关的,缺陷跟踪系统,组织与许可,项目的URL,项目依赖,以及其他。它包含了所有与这个项目相关的东西。事实上,在Maven世界中,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件。
下面是一个POM项目中的pom.xml文件中包含的元素:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.cry.test</groupId> <artifactId>test</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>First Project</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency></project>
- project:是xml文件的根元素,我们主要关心根元素下的子元素 。
- modelVersion:定义了当前POM模型的版本,Maven2或者Maven3 都只能是4.0.0,它是必须的。
- groupId:定义了项目属于哪个组,一般来说这个往往和公司或组织关联,比如说,你所在的公司为mycom.那就应该定义为com.mycom.mymaven,mymaven为项目名称 。
- artifactId:定 义了当前Maven项目在组中的唯一id,例如HelloMaven这个项目,我则把他定义为hello-maven,还例如spring项目,他的 groupId为org.springframework,对于content项目来说artifactId则为spring-content,web项 目则为spring-web。
- version:项目的版本号,用于维护项目的升级和发布
- packaging:打包的格式类型,一般都是jar,也可以是war之类的。如果不填,默认就是jar。
- name: 项目的名称, Maven 产生的文档用,一般没有实际的用处,只是用于标识该项目。
- url:哪个网站可以找到这个项目,提示如果 Maven 资源列表没有,可以直接上该网站寻找, Maven 产生的文档用。
- properties:pom定义一些常量,在pom中的其它地方可以直接引用。其中project.build.sourceEncoding表示项目统一字符集编码。
- dependencies:依赖关系 ,在这里可以声明项目需要依赖的jar包。dependencies下每一个dependency都代表需要依赖的jar包,由groupId、artifactId、version就可以确定唯一jar包,其中scope表示声明的范围:compile (默认范围,用于编译)、provided(类似于编译,但支持你期待jdk或者容器提供,类似于classpath)、runtime(在执行时,需要使用)、test(用于test任务时使用)、system(需要外在提供相应得元素。通过systemPath来取得)
在pom.xml中,modelVersion、groupId、artifactId、version是必须的字段(尽管在继承中groupId和version不需要明确指)。其中groupId、artifactId、version字段就像地址和邮戳,它标记了仓库中的特定位置,就像Maven projects的坐标系统一样。(在gradle中配置包的依赖也需要这三个字段groupId:artifactId:version,如’com.squareup.okhttp:okhttp:2.5.0’)
IntelliJ idea如何创建Maven工程?
- 在Default Settings中首先确认是否已经启动Maven Integration插件:
2. 在New Project中选择创建Maven项目,可以选择工程所需的JDK,还可以通过勾选“Create from archetype”,选择要使用的maven项目模板。如果需要web模板可以选择webapp,我们这里直接选择快速创建一个标准的Java模板:
3. 点击Next后,填写项目的组名GroupId、项目的模块名ArtifactID、项目的版本名Version
4. 点击Next后,可以选择项目所需Maven的版本,我们可以直接去官网http://maven.apache.org/ 下载最新的maven版本,通过…按钮进行配置。这里直接使用idea内置的Maven版本。注意,这里在Properties中添加一个参数archetypeCatalog=internal,不加这个参数,在maven生成骨架的时候将会非常慢,有时候会直接卡住。原因在于:archetypeCatalog表示插件使用的archetype元数据,不加这个参数时默认为remote,local,即中央仓库archetype元数据,由于中央仓库的archetype太多了,所以导致很慢,指定internal来表示仅使用内部元数据。
5. 继续点击Next,这里可以填写项目名、module名、项目所在的位置等等。点击Finish创建工程完毕。
maven工程是什么样子的?
点击Finish后创建的工程如下所示:
简单总结下就如下面所示:
project |-src--main--java--你的源代码 | |--test----java--你的单元测试代码 |-target--编译出的文件和jar包 (编译代码后自动创建) |-pom.xml--项目信息以及任务定义
项目中以groupid作为包名,并自动生成了pom.xml文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.cry.test</groupId> <artifactId>test-maven</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>test-maven</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies></project>
pom.xml文件中声明了整个工程的groupId、artifactId、version和其他相关信息。项目中使用了单元测试,所以在这里需要添加一个jar包依赖,并指指定用于test范围。
如何利用Maven执行任务?
在IntelliJ IDEA中我们可以通过View –> Tool-Windows –> Maven Projects调出Maven的操作面板:
在Lifecycle中列出了Maven可执行的任务,我们可以选择其中所需的任务进行操作。
Maven的生命周期
在上面打开的面板中,Lifecycle列出了Maven工程创建过程中所可以执行的任务。Maven把这些任务分成三大生命周期,他们是相互独立的,分别是:
- clean 清理
- default 构建
- site 建站
一般来说,clean和default比较常用。每个生命周期又有不同的阶段,阶段按顺序执行。比如default周期就包括了validate–>initialize–>其他阶段–>compile–>其他阶段–>test-compile–>其他阶段–>test–>其他阶段–>package–>其他阶段–>install–>deploy 等20几个阶段。
下面是这三大生命周期中的几个重要的阶段,也就是idea maven操作面板中列出的任务。
- clean :清理上一次构建生成的文件,即删除target文件夹,删除生成的package包以及class等文件。
- compile: 编译项目的主源码,执行命令后会在target文件夹中的classes中生成对应的class文件。
- test:先自动进行编译,在运行所有的测试用例。
- package:接受编译好的代码,打包成可发布的格式,如JAR。
- install:将包安装到Maven本地仓库,供本地其他Maven项目使用。
- deploy:将最终的包复制到远程仓库,供其他开发人员和Maven项目使用。
- site:建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成站点。
构建的时候,会依次从最上面的阶段执行到指定的那个阶段。比如执行install任务,它属于default生命周期,实际会执行validate–>initialize–>…–>verify–>install等二十几个阶段。生命周期直接是相互独立的,所以执行install任务时,它只会从default生命周期开始,然后结束于install阶段。所以在开发过程中,我们经常先执行clean操作、然后执行install操作。
执行install操作后会在工程目录下生成target文件夹,用于存储编译后输出的文件和jar包 (jar包名默认以artifactId-版本号命名)。
参考:
Maven官方文档
Maven 与 IntelliJ IDEA 的完美结合
Maven的配置文件pom.xm
【手把手教你Maven】构建过程
Maven日常 —— 你应该知道的一二三
Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
- maven 入门
- maven 入门
- MAVEN 入门
- Maven入门
- maven入门
- maven入门
- Maven 入门
- Maven入门
- maven 入门
- Maven入门
- maven入门
- maven 入门
- maven入门
- Maven入门
- maven入门
- Maven入门
- maven入门
- Maven入门
- RMQ算法
- 数据结构进阶(四)二叉排序树(二叉查找树)
- leetcode9_Palindrome Number
- 面试题:HashMap HashTable ConcurrentHashMap区别
- PAT(B) 101-139-2-2016-09-11 考试总结
- Maven入门
- java性能优化笔记(三)java程序优化
- 小太阳的滚动
- 理解HTTP幂等性
- 初步认识Weex
- 安卓资源中selector的用法
- 计算机图形学基础 : 可见面判别算法
- 给定一个字符串,找出该字符串的最长回文子串
- 一个有意思的“远程反射”XSS(其实是SSRF)