Maven的安装以及使用

1、  maven的介绍

2、  maven的安装配置

3、  安装maven插件m2e

4、  创建maven工程

5、  Maven的核心概念

a)         坐标

b)         依赖管理

c)         生命周期

d)         插件

e)         继承

f)          聚合

6、  maven的仓库管理以及私服(nexus)的搭建

一、Maven简介以及使用背景

  why:

1、都是同样的代码,为什么在我的机器上可以编译执行,而在他的机器上就不行?

2、为什么在我的机器上可以正常打包,而配置管理员却打不出来?

3、项目组加入了新的人员,我要给他说明编译环境如何设置,但是让我挠头的是,有些细节我也记不清楚了。

4、我的项目依赖一些jar包,我应该把他们放哪里?放源码库里?

5、这是我开发的第二个项目,还是需要上面的那些jar包,再把它们复制到我当前项目的svn库里吧

6、现在是第三次,再复制一次吧    ----- 这样真的好吗?

7、我写了一个数据库相关的通用类,并且推荐给了其他项目组,现在已经有五个项目组在使用它了,今天我发现了一个bug,并修正了它,我会把jar包通过邮件发给其他项目组

-----这不是一个好的分发机制,太多的环节可能导致出现bug

项目进入测试阶段,每天都要向测试服务器部署一版。每次都手动部署,太麻烦了。

  what:

Maven是基于POM(工程对象模型),通过一小段描述来对项目的代码、报告、文件进管理的工具。

Maven是一个跨平台的项目管理工具,它是使用java开发的,它要依赖于jdk1.6及以上

Maven主要有两大功能:管理依赖、项目构建。

依赖指的就是jar包

二、Maven安装以及简单命令(有的低版本没有内置Maven或者Maven版本过低就要自己安装喽)

 1、安装以及配置

  ①:去官网下载最新版本的Maven

  ②:解压到你的目录里,建议放在jdk和ide放在一块,便于管理

  ③:配置MAVEN_HOME和path(和JDK配置一样,我就不解释了)

  ④:命令行输入“mvn -v”,如果有版本等信息输出说明装好了

 2、命令

  -compile  编译,生成字节码文件,默认生成target目录

  -test    测试,生成测试结果信息,测试Test里面的断言是否正确,如果没有事先编译该命令就先执行 -compile

  -clean   清空编译以及测试生成的字节码文件

  -package  打包,默认打成jar包

  -install   把jar包上传至本地仓库(默认在userhome/.m2 文件夹下,可以在这配置一个用户配置信息)

  -deploy   如果配置了私服信息,就可以上传至私服(具体配置往后看)

三、安装m2e插件(高版本的自带有)

  安装地址: http://download.eclipse.org/technology/m2e/releases

  之后把出来的插件打对勾装上,然后重启eclipse就好了。

  如果有不会的就参考百度:https://jingyan.baidu.com/article/77b8dc7f9e0c1a6174eab6d6.html

注意:有可能会遇到创建项目提示你某个jar包找不到无法加载。

  原因:网络不好导致某些jar包下载失败。

  解决办法:删除~/.m2/org/apache/maven/目录下的所有文件,然后找个网络好点的时间,打开myeclipse他会自动更新的。

       有人说只要删除里面的plugings目录就好,但是本人亲测不太管用,还是上面全部删掉搞定。

四:创建项目

创建Maven project

创建一个简单的Maven模版

打包方式:如果一般项目或者maven model就用jar

  如果是web项目或者web的控制层就用war,记得自己手动添加jsp页面和web.xml配置文件

  如果是聚合项目的父工程就用pom,方便管理jar包和模块化开发

最后配置pom.xml,需要什么jar就导入什么

五、Maven的核心概念

1 坐标, Maven坐标主要组成

groupId:定义当前Maven组织名称

artifactId:定义实际项目名称

version:定义当前项目的当前版本

2 依赖管理

2.1   依赖范围

其中依赖范围scope 用来控制依赖和编译,测试,运行的classpath的关系. 主要的是三种依赖关系如下:

1.compile: 默认编译依赖范围。对于编译,测试,运行三种classpath都有效

2.test:测试依赖范围。只对于测试classpath有效

3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api

4.runtime:运行时提供。例如:jdbc驱动

2.2   依赖传递

左边第一列表示第一直接依赖范围

上面第一行表示第二直接依赖范围

中间的交叉单元格表示传递性依赖范围。

总结:

  • 当第二依赖的范围是compile的时候,传递性依赖的范围与第一直接依赖的范围一致。
  • 当第二直接依赖的范围是test的时候,依赖不会得以传递。
  • 当第二依赖的范围是provided的时候,只传递第一直接依赖范围也为provided的依赖,且传递性依赖的范围同样为 provided;
  • 当第二直接依赖的范围是runtime的时候,传递性依赖的范围与第一直接依赖的范围一致,但compile例外,此时传递的依赖范围为runtime;

2.3   依赖冲突----就近原则和覆盖原则

在maven中存在两种冲突方式:一种是跨pom文件的冲突,一致是同一个pom文件中的冲突。

跨pom:就近选择本pom

同pom:覆盖选择最后的pom配置

2.4   可选依赖

Optional标签标示该依赖是否可选,默认是false。可以理解为,如果为true,则表示该依赖不会传递下去,如果为false,则会传递下去。

2.5   排除依赖

Exclusions标签可以排除依赖

3      生命周期

Maven有三个生命周期:clean生命周期、default生命周期、site生命周期

生命周期可以理解为项目构建的步骤集合。

生命周期是由多个阶段(Phase)组成。每个阶段都是一个完整的功能,比如mvn clean中的clean就是一个阶段

3.1   Clean生命周期

pre-clean 执行一些需要在clean之前完成的工作

clean 移除所有上一次构建生成的文件

post-clean 执行一些需要在clean之后立刻完成的工作

3.2   Default生命周期(重点)

validate

generate-sources

process-sources

generate-resources

process-resources 复制并处理资源文件,至目标目录,准备打包。

compile 编译项目的源代码。

process-classes

generate-test-sources

process-test-sources

generate-test-resources

process-test-resources 复制并处理资源文件,至目标测试目录。

test-compile 编译测试源代码。

process-test-classes

test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。

prepare-package

package 接受编译好的代码,打包成可发布的格式,如 JAR 。

pre-integration-test

integration-test

post-integration-test

verify

install 将包安装至本地仓库,以让其它项目依赖。

deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

在maven中,只要在同一个生命周期,你执行后面的阶段,那么前面的阶段也会被执行,而且不需要额外去输入前面的阶段,这样大大减轻了程序员的工作。

3.3   Site生命周期(忽略吧)

pre-site 执行一些需要在生成站点文档之前完成的工作

site 生成项目的站点文档

post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

site-deploy 将生成的站点文档部署到特定的服务器上

4      插件

插件(plugin),每个插件都能实现一个阶段的功能。Maven的核心是生命周期,但是生命周期相当于主要指定了maven命令执行的流程顺序,而没有真正实现流程的功能,功能是有插件来实现的。

1.4.1   编译插件--指定该项目运行时使用的jre版本号,前提目标机器必须有该jre

target:jre版本。 encoding:编译使用的编码方式

4.2   Tomcat插件

如果使用maven的tomcat插件的话,那么本地则不需要安装tomcat,可以直接部署运行,方便测试

4.2.1        创建maven的web工程

前四步省略,记得打成war包

第五步:创建WEB-INF及web.xml文件,从别处拷过来

第六步:创建index.jsp文件或者使用框架。。。

4.2.2    使用tomcat插件运行web工程

可以使用默认的tomcat版本启动,但是推荐自己配置版本

使用tomcat7来运行web工程,它的命令是:tomcat7:run

然后浏览器输入:http:localhost/就可以了,即http://ip:$port/$path

1.5      继承在依赖中指定父亲的gav坐标

好处:

  ①:父工程统一依赖jar包

    在父工程中对jar包进行依赖,在子工程中都会继承此依赖。

  ②:父工程统一管理版本号--不推荐,因为子工程还得配置依赖信息,只是少个版本

    dependencyManagement标签管理的依赖,其实没有真正依赖,它只是管理依赖的版本。

  子工程的pom文件:

  ③:父工程抽取版本号--推荐,方便省事

1。6    聚合

在真实项目中,一个项目有表现层、业务层、持久层,对于业务层和持久层,它们可以在多个工程中被使用,所以一般会将业务层和持久单独创建为java工程,为其他工程依赖。

例如:

MavenProject:

  根项目:MP--打包pom

MavenModel: 所有父工程都是MP

  持久层:MPDao--打包jar

  业务层:MPService--打包jar

  变现层:MPController--打包war

六、Maven仓库以及私服管理

1)什么是Maven仓库?

  用来统一存储所有Maven共享构建的位置就是仓库。根据Maven坐标定义每个构建在仓库中唯一存储路径大致为:groupId/artifactId/version/artifactId-version.packaging

  可以分为:本地仓库,远程仓库(中央仓库:apache的 和 私服:自己的)

2)为什么要使用私服

如图,假设没有私服每次下载jar包都要访问中央仓库,如果人多就导致网络阻塞。但是如果都访问局域网的仓库呢????

3)私服的搭建----nexus服务器

为所有来自中央仓库的构建安装提供本地缓存。

下载网站:http://nexus.sonatype.org/,下载新版本这里使用的2.11版本,内置jetty,所以直接运行就可以了

①:解压到jdk同层目录即可,一共俩文件夹

②:配置信息:conf/nexus.properties修改端口号和路径

# Jetty section
application-port=8081        #这里是端口号自己改
application-host=0.0.0.0  #访问地址,改成localhost即可
nexus-webapp=${bundleBasedir}/nexus
nexus-webapp-context-path=/nexus

# Nexus section
nexus-work=${bundleBasedir}/../sonatype-work/nexus
runtime=${bundleBasedir}/nexus/WEB-INF

③:启动nexus

.\nexus-2.12.0-01\bin\jsw\目录下有好多,根据你操作系统版本自己打开吧

  如果出现报错就是jdk版本太低,推荐1.8

④:nexus管理页面

右上角登陆:默认帐号密码--admin/admin123

nexus仓库目录:

访问nexus,访问URL: http://localhost:8081/nexus-xxx

nexus仓库组:

仓库有4种类型 :

l  group(仓库组):一组仓库的集合

l  hosted(宿主):配置第三方仓库 (包括公司内部私服 )

l  proxy(代理):私服会对中央仓库进行代理,用户连接私服,私服自动去中央仓库下载jar包或者插件

l  virtual(虚拟):兼容Maven1 版本的jar或者插件

 

Nexus的仓库和仓库组介绍:

l  3rd party: 一个策略为Release的宿主类型仓库,用来部署无法从公共仓库获得的第三方发布版本构建

l  Apache Snapshots: 一个策略为Snapshot的代理仓库,用来代理Apache Maven仓库的快照版本构建

l  Central: 代理Maven中央仓库

l  Central M1 shadow: 代理Maven1 版本 中央仓库

l  Codehaus Snapshots: 一个策略为Snapshot的代理仓库,用来代理Codehaus Maven仓库的快照版本构件

l  Releases: 一个策略为Release的宿主类型仓库,用来部署组织内部的发布版本构件

l  Snapshots: 一个策略为Snapshot的宿主类型仓库,用来部署组织内部的快照版本构件

Public Repositories:该仓库组将上述所有策略为Release的仓库聚合并通过一致的地址提供服务

配置默认可以从远程仓库下载索引文件:

⑤:配置所有jar都从私服下载

在本地仓库的setting.xml中配置如下:


<mirrors>

<mirror>

<!--此处配置所有的构建均从私有仓库中下载 *代表所有,也可以写central -->

<id>nexus</id>

<mirrorOf>*</mirrorOf>

<url>http://localhost:8080/nexus-2.7.0-06/content/groups/public/</url>

</mirror>

</mirrors>

⑥:往私服上传部署

第一步:Nexus的访问权限控制

在本地仓库的setting.xml中配置如下:


<server>

<id>releases</id>

<username>admin</username>

<password>admin123</password>

</server>

<server>

<id>snapshots</id>

<username>admin</username>

<password>admin123</password>

</server>

第二步:配置pom文件

在需要构建的项目中修改pom文件


<distributionManagement>

<repository>

<id>releases</id>

<name>Internal Releases</name>

<url>http://localhost:8080/nexus-2.7.0-06/content/repositories/releases/</url>

</repository>

<snapshotRepository>

<id>snapshots</id>

<name>Internal Snapshots</name>

<url>http://localhost:8080/nexus-2.7.0-06/content/repositories/snapshots/</url>

</snapshotRepository>

</distributionManagement>

第三步:执行maven的deploy命令

时间: 2024-10-29 19:10:12

Maven的安装以及使用的相关文章

Maven简介 &amp; 安装

近期开发的云平台项目使用了Maven 最为项目开发的管理工具,那么何为Maven呢?有何用途以及它的实现原理是什么呢?带着好奇,我们一起来学习Maven,共同揭开它的神秘面纱! 一,何为Maven Maven是一个采用纯java编写的开源项目管理工具.采用一种被称为Project  object Model(POM)概念来管理项目,所有的项目配置信息都被定义在pom.xml文件中,通过这个pom文件,就可以管理我们对所有包的依赖.例如,我们使用一些开源框架,第三方工具的jar包,以及这些jar包

Maven学习笔记(二) :Maven的安装与配置

在Windows上安装Maven:  1.  首先检查JDK安装 通过命令行执行命令:echo %JAVA_HOME%和 java  -version,可以查看当前java的安装目录及java的版本,maven要求JDK的版本必须在1.4以上. 2. 下载Maven 前往maven的下载页面:http://maven.apache.org/download.cgi下载最新或稳定版的maven,如:apache-maven-3.2.3-bin.zip. 3. 安装Maven 将压缩文件解压到你想要

MyEclipse下Maven的安装配置

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 发文时,绝大多数开发人员都把 Ant 当作 Java 编程项目的标准构建工具.遗憾的是,Ant 的项目管理工具(作为 make的替代工具)不能满足绝大多数开发人员的需要.通过检查 Ant 构建文件,很难发现项目的相关性信息和其它信息(如开发人员/拥有者.版本或站点主页). Maven 除了以程序构建能力为特色之外,还提供 Ant 所缺少的高级项目管理工具.由于 Maven 的缺省构建规

maven:安装m2eclipse插件

离线安装: 1.下载插件包:http://pan.baidu.com/s/1c0cRHsO 2.解压到:D:\downloads\m2eclipse 3.在eclipse的dropins目录下,新建maven.link文件 4.编辑maven.link,指向插件位置:path=D:/downloads/m2eclipse 5.重启eclipse即可 maven:安装m2eclipse插件,布布扣,bubuko.com

Maven基本安装与配置

百度Maven,进入Maven官网,点击Download 点击下载Binary zip包,下载到电脑上相应的位置即可. 找到下载文件,进行解压,解压到相应的文件夹下面,并且记住路径. 打开系统->高级系统设置 点击环境变量 点击新建 新建系统变量,变量名为M2_HOME,变量值为Maven解压后的文件夹,点击确定 再配置Path变量,新建%M2_HOME%bin,点击确定 点击确定,进行环境变量的应用 最后来测试一下Maven是否安装完成,进入cmd命令行,输入mvn -version,如出现以

一.Maven的安装和配置整理

Maven的安装和配置 1.1安装 进入Maven官网的下载页面:http://maven.apache.org/download.cgi选择当前最新版本:"apache-maven-3.0.4-bin.zip",下载到本地,解压缩到本地磁盘 1.2配置 1.2.1:修改默认的本地仓库位置 Maven默认的本地仓库位置是当前用户工作目录下的C:\Users\Administrator\.m2/repository,使用过程中这个目录里的文件会比较多,占用空间越来越大.一般建议更换到其它

Linux(Debian)下Maven的安装

Maven的下载地址:这里以最新的3.3.9版本为例进行安装,在这之前需要确保机器上已经安装了JDK. -- 在home文件夹中建立maven文件夹,下载安装文件 建立文件夹:mkdir maven 下载:wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz 解压:tar vxf apache-maven-3.3.9-bin.tar.gz 重命名:mv apa

maven的安装

maven版本:apache-maven-3.3.9 eclipse版本:4.6.0 jdk版本:jdk1.8.0_92 一.maven的安装 环境变量中配置: 添加MAVEN_PATH="D:\devel\apache-maven-3.3.9",path中添加%MAVEN_PATH%\bin,看自己爱好,比较简单. 如图: 检测maven是否配置成功: cmd命令中输入:"mvn -v", 显示如下信息表示安装成功. 二.maven本地仓库的配置 maven默认的

【Maven】安装及配置(Linux)

本文介绍Linux环境下安装Maven 安装环境和软件 系统:Linux(CentOS) 软件:apache-maven-3.3.9-bin.tar.gz(解压版). 安装步骤 maven是基于Java的工具软件,在安装maven之前必须保证操作系统(本人以Linux为例)上安装了JDK,Linux安装JDK参照[Linux] JDK安装及配置 (tar.gz版): 从maven官网(http://maven.apache.org)下载:apache-maven-3.3.9-bin.tar.gz