文章大纲

一、maven功能介绍
二、maven整合javaweb案例
三、私服应用(了解)
四、总结
五、相关资料下载
六、参考文章

一、maven功能介绍

1. maven基本介绍

  Maven的Apache公司开源项目,是项目构建工具。用来依赖管理。
1.1 maven的好处
使用传统项目开发crm项目,项目大小:

同样的项目使用maven开发

同样的代码,实现功能都一样,maven项目如何做到的?可以初步推断maven项目中一定没有jar包。没有jar包的maven项目如何运行?
Maven项目找jar包过程:

1.2 maven的好处

maven的两大核心:
依赖管理:对jar包管理过程
项目构建:项目在编码完成后,对项目进行编译、测试、打包、部署等一系列的操作都通过命令来实现

通过maven命令将web项目发布到tomcat:

温馨提示:使用myeclipse或者IDEA时,maven命令无需出现mvn,直接tomcat:run即可。

1.3 Maven工程的分类
打包方式
常见:jar、war、pom

Jar包
编译完成,打包
会打成一个JAR包,用作jar包使用

war包
是一个Web工程
发布在服务器上的工程,比如,网站或服务

将来我们会将所有的JAR包,打到一起
打到一个war包里面,可以部署到Tomcat上

Pom
聚合工程
一般都是父工程,管理jar包的版本、maven插件的版本、统一的依赖管理

Pom工程中,至少要有一个war包

2. maven安装、配置本地仓库

maven程序安装前提:maven程序java开发,它的运行依赖jdk。

2.1 maven的下载安装

下载安装包

解压到本地磁盘(解压目录不要有中文,空格)

配置环境变量,Jdk环境变量:JAVA_HOME

将maven_home环境变量配置到path环境变量中

查询maven的版本信息:

2.2 配置本地仓库

本地仓库是指jar包存放的文件夹

2.3 maven配置中央仓库,阿里云仓库地址
  使用maven自带的中央仓库地址很慢,所以我们可以改成国内的地址,比如阿里云,jar包下载到本地仓库的速度就会快很多,具体配置如下:
  打开maven安装目录conf下的settings.xml文件,大概在145行找到<mirrors>下添加以下代码:

 <mirror>
<id>maven.net.cn</id>
<mirrorOf>central</mirrorOf>
<name>central mirror in china</name>
<url>http://maven.net.cn/content/groups/public</url> </mirror>

3. maven项目标准目录结构

对项目中文件进行细分:

4. maven的常用命令(熟练掌握)

4.1 clean:清理
  将项目根目录下target目录清理掉。

4.2 compile:编译
  将项目中.java文件编译为.class文件

4.3 test:单元测试
  单元测试类名有要求:XxxxTest.java
  将项目根目录下src/test/java目录下的单元测试类都会执行。

4.4 package:打包
  web project ---- war包
  java project -----jar包
  将项目打包,打包项目根目录下taget目录

4.5 install:安装
  解决本地多个项目公用一个jar包。
  打包到本地仓库

4.6 温馨提示
  使用myeclipse或者IDEA时,maven命令无需出现mvn,直接tomcat:run即可。

5 . 依赖范围(了解)

  依赖范围:默认是compile
  如果将servlet-api.jar设置为compile,打包后包含serlvet-api.jar,war包部署到tomcat跟tomcat中存在servlet-api.jar包冲突。导致运行失败。
  如果使用到tomcat自带jar包,将项目中依赖作用范围设置为:provided,其他可以默认

6. 传递依赖冲突解决(掌握)

6.1 依赖传递规则介绍
  传递依赖:A(项目)依赖B,B依赖C(1.1版本),B是A的直接依赖,C就是A的传递依赖
导入依赖D,D依赖C(1.2版本)

6.2 Maven自己调解原则

第一声明者优先原则
  谁先定义的就用谁的传递依赖。

路径近者优先原则
  直接依赖级别高于传递依赖。

6.3 排除依赖

方法一:

方法二:版本锁定(推荐使用)

二、maven整合javaweb案例

1. maven整合web项目案例(熟练掌握)

1.1 配置eclipse中maven环境
  配置m2e插件,Mars2版本自带maven插件
  需要配置maven程序

配置userSetting:让eclipse知道maven仓库位置

1.2 创建maven的javaweb项目

创建好的web项目,可能出现以下错误:
(1)web.xml缺失

(2)jdk编译版本1.5,在pom.xml中添加插件

(3)创建servlet,serlvet编译报错,原因:缺失servlet-api-xx.jar包

1.3 maven命令运行项目

2. maven对项目进行拆分、聚合(熟练掌握)

2.1 拆分、聚合基本介绍
  对现在已有maven ssh项目进行拆分,拆分思路:将dao层的代码已经配置文件全体提取出来到一个表现上独立的工程中。同样service、action拆分。
  ssh-parent: 父工程
  ssh-dao:(子模块)
  ssh-service
  ssh-web
  拆分完成对拆分后的项目进行聚合,提出概念父工程

2.2 创建父工程

创建好父工程目录结构:只有pom.xml,可以推断父工程不进行编码。
(1)项目需要的依赖的信息,在父工程中定义,子模块继承过程
(2)将各个子模块聚合到一起

2.3 将创建父工程发布到本地仓库
  将父工程发布到本地仓库后,其他的字工程才能继承使用

2.4 创建子模块ssh-dao
温馨提示:子模块需要右键父项目新建Module。
ssh-dao负责数据访问层:包含dao相关代码&配置文件

创建之后,将ssh-dao发布到本地仓库,给2.5的ssh-service进行依赖

2.5 创建子模块ssh-service

将ssh-service工程打包到本地仓库,给2.6的ssh-web项目添加依赖

2.6 创建子模块ssh-web:war

在ssh-web项目中添加service工程依赖。

2.7 运行方式
  Maven方式:
  方式1:运行父工程。父工程将各个子模块聚合到一起。将ssh-web打war包发布到tomcat
  方式2:直接运行web工程

  其他方式:部署到tomcat

三、私服应用(了解)

1. 私服安装

下载安装包

解压到本地磁盘

使用管理员权限打开dos,在dos下执行命令安装私服

启动服务

找到私服的访问url

2. 私服仓库类型

Hosted:宿主仓库
存放本公司开发的jar包(正式版本、测试版本、第三方:存在版权问题--Oracle)
Proxy:代理仓库
代理中央仓库、Apache下测试版本的jar包
Group:组仓库
将来连接组仓库。包含Hosted:宿主仓库,Proxy:代理仓库

3. 上传jar包到私服上(应用)

在maven目录下conf/settings.xml.认证:配置用户名密码

<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>

在将要上传的项目的pom.xml中配置jar包上传路径url

<distributionManagement>
<repository>
<id>releases</id>
<url>http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>

执行命令发布项目到私服(上传)

4. 下载jar包到本地仓库(应用)

在maven目录下conf/settings.xml。配置模板

<profile>
<!--profile的id-->
<id>dev</id>
<repositories>
<repository>
<!--仓库id,repositories可以配置多个仓库,保证id不重复-->
<id>nexus</id>
<!--仓库地址,即nexus仓库组的地址-->
<url>http://localhost:8081/nexus/content/groups/public/</url>
<!--是否下载releases构件-->
<releases>
<enabled>true</enabled>
</releases>
<!--是否下载snapshots构件-->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
<pluginRepository>
<!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
<id>public</id>
<name>Public Repositories</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
</profile>

激活模板

<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>

四、总结

Maven好处包括以下几点
1、不再拷贝jar包。项目不需要存放jar包。导致项目源代码小
2、使用maven开发的工程,如果环境统一导入别的maven的项目不会报错
3、代码耦合度进一步降低.
4、方便项目进行升级
5、节省人力成本

五、相关资料下载

链接:https://pan.baidu.com/s/1UUCps9Be3n8ZwGOXmVjfgw
提取码:s15f

六、参考文章

http://yun.itheima.com/course/234.html

Maven详解(非原创)的更多相关文章

  1. Redis基础知识详解(非原创)

    文章大纲 一.Redis介绍二.Redis安装并设置开机自动启动三.Redis文件结构四.Redis启动方式五.Redis持久化六.Redis配置文件详解七.Redis图形化工具八.Java之Jedi ...

  2. 搜索引擎框架之ElasticSearch基础详解(非原创)

    文章大纲 一.搜索引擎框架基础介绍二.ElasticSearch的简介三.ElasticSearch安装(Windows版本)四.ElasticSearch操作客户端工具--Kibana五.ES的常用 ...

  3. 权限框架之Shiro详解(非原创)

    文章大纲 一.权限框架介绍二.Shiro基础介绍三.Spring Boot整合Shiro代码实战四.项目源码与资料下载五.参考文章   一.权限框架介绍 1. 什么是权限管理   权限管理属于系统安全 ...

  4. Tomcat安全设置与优化详解(非原创)

    一.Tomcat简介二.Tomcat安全设置三.Tomcat优化四.参考文章   一.Tomcat简介 Tomcat 是 Apache软件基金会下的一个免费.开源的WEB应用服务器,它可以运行在 Li ...

  5. Spring之IoC详解(非原创)

    文章大纲 一.Spring介绍二.Spring的IoC实战三.IoC常见注解总结四.项目源码及参考资料下载五.参考文章 一.Spring介绍 1. 什么是Spring   Spring是分层的Java ...

  6. Cookie/Session机制详解(非原创)

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  7. Java之Spring Boot详解(非原创)

    文章大纲 一.Spring Boot 概述二.Spring Boot 入门案例三.Spring Boot核心功能代码实战四.项目源码与资料下载五.参考文章   一.Spring Boot 概述 1. ...

  8. RESTful详解(非原创)

    文章大纲 一.什么是RESTful二.为什么要使用RESTful三.RESTful实战四.项目源码下载五.参考文章   一.什么是RESTful 1. RESTful概念   REST 是面向资源的, ...

  9. MySQL数据库基础详解(非原创)

    文章大纲 一.数据库简介二.Mysql数据库简介三.Mysql安装与服务启动(Windows版本)四.Mysql图形化工具五.Mysql存储引擎精讲六.Mysql数据类型介绍七.Mysql主要专业名称 ...

随机推荐

  1. LightOJ1355 Game Of CS(green 博弈)

    Jolly and Emily are two bees studying in Computer Science. Unlike other bees they are fond of playin ...

  2. python 金融应用(三)数据可视化

    matplotlib 库( http://www.matp1otlìb.org )的基本可视化功能. 主要是2-D绘图.金融绘图和3-D绘图 一.2-D绘图 1.1一维数据集 #导入所需要的包impo ...

  3. zabbix系列-Grafana4.6.3+Zabbix 的安装部署

    zabbix系列(五) Grafana4.6.3+Zabbix 的安装部署 伟创享 2019-07-31 11:27:18 使用了一段时间Grafana,感觉还挺好用的.部分效果图如下: ​ zabb ...

  4. 【重温基础】JS中的常用高阶函数介绍

    Ps. 晚上加班到快十点,回来赶紧整理整理这篇文章,今天老大给我推荐了一篇文章,我从写技术博客中收获到了什么?- J_Knight_,感受也是很多,自己也需要慢慢养成记录博客的习惯,即使起步艰难,难以 ...

  5. 【C语言】%f,%lf,%3.1f

    在输出时应注意变量类型,使用如%3.1时会默认四舍五入.

  6. LNMP-Nginx负载均衡

    Nginx负载均衡介绍 Nginx提供负载均衡的模块upstream,这个模块是默认的,不需要重新编译模块.通常情况下,负载均衡一般用于后端两台机器同时提供服务供用户访问,但是用户经常访问的其中一台服 ...

  7. vs code:sync setting 插件

    sync setting 是同步设置插件 第一步:A机器上下载插件 第二步:通过git生成 token user(个人中心) --> Settings --> Developer sett ...

  8. HashMap面试必问的6个点,你知道几个?

    一.HashMap的实现原理? 此题可以组成如下连环炮来问 你看过HashMap源码嘛,知道原理嘛? 为什么用数组+链表? hash冲突你还知道哪些解决办法? 我用LinkedList代替数组结构可以 ...

  9. MySQL的安装、启动和基础配置 —— mac版本

    安装 第一步:打开网址,https://www.mysql.com,点击downloads之后跳转到https://www.mysql.com/downloads/选择Community选项 第二步: ...

  10. php与Redis实现一个100万用户的投票项目,如何实现实时查看投票情况?

    好了,什么是冷热数据交换呢? 很土的解释一下,冷数据就是之前使用的数据,有种过去式的感觉,而热数据就是当前的数据,理解为现在进行时吧.如何交换呢?就是将Redis的数据周期存储到mysql中! 整体的 ...