文章大纲

一、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. iOS textView的使用总结

    转自:http://blog.csdn.net/zhaopenghhhhhh/article/details/11597887 在.h文件中声明: @interface ProtocolViewCon ...

  2. kubernetes学习笔记(二)——部署服务

    文章目录 (1)创建app (2)创建app的docker镜像 (3)部署app到k8s (4)参考资料 前面一篇文章部署好了minikube环境,这次学习下怎么部署app到kubernetes环境当 ...

  3. OA思维导图(第一次画)

  4. POJ 2186 Popular cows(SCC 缩点)

    Every cow's dream is to become the most popular cow in the herd. In a herd of N (1 <= N <= 10, ...

  5. 使用RSA加密方式加密文件

    链接:GITHUB 使用RSA对流进行加密并保存到文件中 缺点:速度非常的慢,加密大文件就等着吧 环境 VS2017 + C# 7.0 + .net framwork 4.7.2

  6. 小白进阶之路—python脚本(1)判断是否是一个目录

    #!/usr/bin/env python# -*- coding: utf-8 -*-import os   dir = "/var/www/html/EnjoyWeekend/" ...

  7. 【JS】312- 复习 JavaScript 严格模式(Strict Mode)

    点击上方"前端自习课"关注,学习起来~ 注:本文为 < JavaScript 完全手册(2018版) >第30节,你可以查看该手册的完整目录. 严格模式是一项 ES5 ...

  8. 一个UI程序开始的代码函数导读

    #import "QFAppDelegate.h" @implementation QFAppDelegate //最后一个执行的初始化函数 //主要做一些启动之前的初始化操作 - ...

  9. 重学前端--js是面向对象还是基于对象?

    重学前端-面向对象 跟着winter老师一起,重新认识前端的知识框架 js面向对象或基于对象编程 以前感觉这两个在本质上没有什么区别,面向对象和基于对象都是对一个抽象的对象拥有一系列的行为和状态,本质 ...

  10. 多个DataTable的合并成一个新表

    多个DataTable的合并成一个新表 参考:https://www.cnblogs.com/JuneZhang/archive/2011/12/11/2284243.html