Maven详解(非原创)
文章大纲
一、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详解(非原创)的更多相关文章
- Redis基础知识详解(非原创)
文章大纲 一.Redis介绍二.Redis安装并设置开机自动启动三.Redis文件结构四.Redis启动方式五.Redis持久化六.Redis配置文件详解七.Redis图形化工具八.Java之Jedi ...
- 搜索引擎框架之ElasticSearch基础详解(非原创)
文章大纲 一.搜索引擎框架基础介绍二.ElasticSearch的简介三.ElasticSearch安装(Windows版本)四.ElasticSearch操作客户端工具--Kibana五.ES的常用 ...
- 权限框架之Shiro详解(非原创)
文章大纲 一.权限框架介绍二.Shiro基础介绍三.Spring Boot整合Shiro代码实战四.项目源码与资料下载五.参考文章 一.权限框架介绍 1. 什么是权限管理 权限管理属于系统安全 ...
- Tomcat安全设置与优化详解(非原创)
一.Tomcat简介二.Tomcat安全设置三.Tomcat优化四.参考文章 一.Tomcat简介 Tomcat 是 Apache软件基金会下的一个免费.开源的WEB应用服务器,它可以运行在 Li ...
- Spring之IoC详解(非原创)
文章大纲 一.Spring介绍二.Spring的IoC实战三.IoC常见注解总结四.项目源码及参考资料下载五.参考文章 一.Spring介绍 1. 什么是Spring Spring是分层的Java ...
- Cookie/Session机制详解(非原创)
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...
- Java之Spring Boot详解(非原创)
文章大纲 一.Spring Boot 概述二.Spring Boot 入门案例三.Spring Boot核心功能代码实战四.项目源码与资料下载五.参考文章 一.Spring Boot 概述 1. ...
- RESTful详解(非原创)
文章大纲 一.什么是RESTful二.为什么要使用RESTful三.RESTful实战四.项目源码下载五.参考文章 一.什么是RESTful 1. RESTful概念 REST 是面向资源的, ...
- MySQL数据库基础详解(非原创)
文章大纲 一.数据库简介二.Mysql数据库简介三.Mysql安装与服务启动(Windows版本)四.Mysql图形化工具五.Mysql存储引擎精讲六.Mysql数据类型介绍七.Mysql主要专业名称 ...
随机推荐
- go基础之并发
1.Goroutines是轻量级线程 2.channels的同步通信 1.Goroutines是轻量级线程 go语句在单独的线程中运行一个函数. 你可以使用go语句启动一个新的执行线程,即一个goro ...
- HTML5学习第二天!
学习了一天,然后整理内容到现在,感觉昨天的学习效率有点差,哎! 感受尽在代码中,布局真的脑壳疼,仅仅只整理了CSS中的list: <!DOCTYPE html> <html> ...
- 支付宝支付功能(使用支付宝sdk)
1.准备参数 新建一个公共参数配置类NewAlipayconfig (可将参数存放到config配置文件中读取) public class NewAlipayconfi ...
- Ceph 提供iSCSI存储
Tgtd+Ceph部署 一.yum安装tgt [root@c720181 ~]# yum --enablerepo=epel -y install scsi-target-utils libxslt ...
- Python3 面向对象进阶2
目录 Classmethod Staticmethod Isinstance Issubclass 反射 概念 hasattr getattr setattr delattr 魔法方法 概念 __ne ...
- Http协议 & Servlet
Http协议&Servlet Http协议 什么是协议 双方在交互.通讯的时候遵守的一种规范.规则. http协议 针对网络上的客户端与服务器端在执行http请求的时候,遵守的一种规范.其实就 ...
- 蝉知CMS5.6反射型XSS审计复现
0x00 源起 最近在深入学习反射XSS时遇到蝉知CMS5.6反射型XSS这个案列,乍一看网上的漏洞介绍少之又少,也没有详细的审计复现流程.虽然是17年的漏洞了,不巧本人正是一个喜欢钻研的人.这个CM ...
- springmvc: No converter found for return value of type
刚开始学习springmvc的童鞋,相信很多都需要过这种情况,报错信息如下 org.springframework.http.converter.HttpMessageNotWritableExcep ...
- SpringMVC框架之第一篇
2.SpringMVC介绍 2.1.SpringMVC是什么 SpringMVC是Spring组织下的一个表现层框架.和Struts2一样.它是Spring框架组织下的一部分.我们可以从Spring的 ...
- Android 表格布局 TableLayout
属性介绍 stretchColumns:列被拉伸 shrinkColumns:列被收缩 collapseColumns:列被隐藏 举例测试 <TableLayout android:id=&qu ...