首页 > 其他 > 详细

Maven详解

时间:2019-04-28 16:16:08      阅读:174      评论:0      收藏:0      [点我收藏+]

文章大纲

一、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即可。

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详解

原文:https://www.cnblogs.com/WUXIAOCHANG/p/10784540.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!