Maven入门
1. Maven概念模型
- 项目对象模型(Project Object Mobel)
通过pom.xml定义项目的坐标、项目依赖、项目信息、插件目标等。每个maven工程中都有一个pom.xml文件(核心配置文件),该文件里面定义了工程所依赖的jar包、本工程的坐标、打包运行方式等。 - 依赖管理系统(Dependency Management System)
maven的基础核心,通过定义项目所依赖组件的坐标由maven进行依赖管理。也即maven通过坐标对项目工程所依赖的jar包进行统一规范的管理。
比如:项目依赖Struts2.3.24,通过在pom.xml中定义依赖即可将Struts2的jar包自动加入到工程中,pom.xml中定义依赖如下:<dependency> <groundId>org.apache.struts</groundId> <artifactId>struts2-core</artifactId> <version>2.3.24</version> </dependency>
-
一个项目生命周期(Project Lifecycle)
一个软件开发人员每天都在完成项目的生命周期:清理、编译、测试、部署,有的手工完成,有的通过Ant(也是一个项目构建工具)脚本自动完成,maven将项目的生命周期抽象统一为:清理、初始化、编译、测试、报告、打包、部署、站点生成等。
maven就是要保证一致的项目构建流程,通过执行一些简单命令即可实现上边生命周期的各个过程。
- 一组标准集合
maven将整个项目管理过程定义一组标准,比如:通过maven构建工程有标准的目录结构,有标准的生命周期阶段、依赖管理有标准的坐标定义等。
我在这儿还是强调一遍:maven工程有自己标准的工程目录结构、有标准的坐标定义。 - 插件(plugin)目标(goal)
maven管理项目生命周期过程都是基于插件完成的。
2. maven的仓库
maven工作需要配置仓库,本地的项目A、项目B等通过maven从远程仓库(可以理解为互联网上的仓库)下载jar包并保存在本地仓库,本地仓库就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库已经存在了。可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。
下面描述了maven中仓库的类型:
- 本地仓库:用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找。
- 远程仓库:如果本地需要插件或者jar包,本地仓库没有,默认从远程仓库下载。
- 中央仓库:在maven环境内部内置一个远程仓库地址:
http://repo1.maven.org/maven2
,它是中央仓库(即特殊的远程仓库),服务于整个互联网,它是由maven团队自己维护的,里面由大量的常用类库,并包含了世界上大部分流行的开源项目构件。
3. 安装
1). 下载和安装--下载地址
- bin目录:mvn.bat(以run方式运行项目)、mvnDebug.bat(以debug方式运行项目)
- boot目录:maven运行需要的类加载器
- conf目录:settings.xml,整个maven工具的核心配置文件
- lib目录:maven运行依赖的jar包
2). 配置环境变量
I. 新建环境变量
II. 将
%MAVEN_HOME%\bin
添加到path环境变量中 III. 测试
在命令提示符中输入命令--
mvn -v
3). 本地仓库配置
本地仓库是用来存放联网下载的maven插件和jar包,maven本地仓库有的jar包将不再从互联网下载,所以本地仓库就相当于一个缓存。
在maven的安装目录中的conf目录下有一个settings.xml文件,在这个文件中可配置本地仓库
如果本地仓库不配置(那么就会从互联网上下载jar包,而且下载速度贼慢),那么默认的本地仓库的位置就是{user.home}表示windows用户目录,在win7系统下如下:
- 全局settings配置文件:就是maven的安装目录中的conf目录下的settings.xml文件。该文件里面的所有配置可应用于所有项目。
- 用户settings配置文件:在${user.home}/.m2/repository目录下。如果某些用户需要对maven特殊设置,用户可以自定义settings文件
4). eclipse配置maven安装程序
高版本的eclipse默认已经集成了maven的插件,但其实还内置了maven程序,Window->Preferences,搜索maven如下:
注意:我们一般不用内置的maven程序,原因是为了在项目中统一maven版本
5). 选择指定的maven程序
点击Add...->>然后选择自己电脑中的maven程序->>点击Finish。
然后勾选新增的一项。
6). 指定User Settings
点击User Settings->点击Browse...选择settings.xml文件->点击Update Settings,在Local Repository一项会自动填充仓库位置->点击Apply->OK。
7). Eclipse浏览本地仓库
Window->Show View->Other->Maven->Maven Repositories.
4. 测试项目
1). 新建项目
I. File->Other->Maven->Maven Project->Next
II. 勾选Use default Workspace location是将工程创建在默认的路径下
III. 点击最后一项->Next
- maven-archetype-quickstart: 普通Java工程
-
maven-archetype-webapp: Web工程
IV. 配置信息->点击Finish.
- Group Id:项目的名称,项目名称以域名的倒序命名(类似java包名),比如我们要创建一个CRM的项目,可写为cn.itcast.crm。
- Artifact Id:模块名称(子项目名称)。
- Version:项目当中模块的版本,snapshot(快照版或测试版,没有正式发行)、release(正式发行版本)。
- Package:包名。Group Id + Artifact Id.
V. 解决错误
错误原因:未Server Runtime.
解决办法:邮件项目->Build Path->Configure Build Path...->Libraries->Add Library...->Next->apply..
VI. 项目结构
*注意:新创建的maven工程的目录结构不是一个完整的目录结构。
maven工程的一个完整的目录结构为:
project /src/main/java 主体程序的java源文件(不要放配置文件) /src/main/resources 主体程序所需要的配置文件(不要放java文件) /src/test/java 单元测试程序的java源文件 /src/test/resources 单元测试程序所用的配置文件 /target 编译输出目录 /pom.xml
2). 配置
I. 设置maven的编译版本,由于我使用的是JDK1.8,所以要设置maven的编译版本为1.8,即要在maven工程的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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mazaiting.cmp</groupId> <artifactId>MavenTest</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>MavenTest Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>MavenTest</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> </project>
maven运行的时候都是依赖于插件的,包括编译也是需要通过插件——org.apache.maven.plugins(该插件就在你的本地仓库)来完成。
II. 添加完如上配置之后,可发现我们的maven工程上面有一个红叉,如下所示:
III. 更新项目。右键项目->Maven->Update Project...
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
必须要理清的Java线程池(原创)
本文已独家授权 鸿洋( hongyangAndroid) 公众号发布! 前言: 本篇文章主要介绍的是Java(Javaee和Android开发都会涉及)中的线程池。线程池不仅是Java多线程编程的重要基础,而且也是Android面试和Javaee面试中,面试官心血来潮突然向你发难的一道面试题(可能他自己也说不清楚道不明白线程池的概念和应用场景,但他们就是想见你一脸尴尬的表情以此作为压低你工资的筹码)。说到线程池之前,我们首先必须理清楚 线程、并行和并发、多线程的基本概念。 线程池的概念大致理清楚之后,我们在分析OkHttp这一经典网络框架内部的线程池是如何实现的,通过分析源码进一步加深线程池概念。文章一如既往原来的风格,篇幅较长但力争写得详细明白。笔者从开始写到发布花了自己近一周的业余时间。(已对部分内容已进行了删减,初版达到了万字)个人希望看到这篇文章的开发者可以耐心、仔细、慢慢的看完,分段阅读也是较好的选择。 所谓:九层之台、起于垒土 。 另外对本文有任何意见或者觉得文章内容有所不足请在评论区直接提出issue,谢谢。 线程: 说起线程,大家可能都不陌生。线程...
- 下一篇
day02_js学习笔记_01_js的简介、js的基本语法
day02_js学习笔记_01_js的简介、js的基本语法 ============================================================================= ============================================================================= 涉及到的知识点有: 一、js的简介 1、js是什么? 2、js能做什么? 3、js历史及组成 4、js被引入的方式 (1)内嵌脚本 (2)内部脚本 (3)外部脚本 二、js的基本语法 1、变量(js是弱类型的语言) 2、原始(基本)数据类型(java中叫基本数据类型) 3、引用数据类型 4、运算符 (1) 赋值运算符 (2) 算术运算符 (3) 逻辑运算符(js中只有双与和双或) (4) 比较运算符(关系运算符) (5) 三元运算符(三目运算符) (6) void运算符 (7) 类型运算符 5、逻辑语句 (1) if else (2) switch (3) 普通for循环 (4) 增强for in循环 =========...
相关文章
文章评论
共有0条评论来说两句吧...