• 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

  • 相关阅读:
    windows 8 metro 开发学习资源链接
    通过实例模拟ASP.NET MVC的Model绑定机制:简单类型+复杂类型
    Session hijacking(会话劫持)
    PagedList是NuGet上提供的一个分页的类库
    joomla
    Win8风格的Web启动界面
    Dynamic
    c# 常用文檔轉換txt文件
    创建Windows服务(Windows Services)N种方式总结
    DOM世界的观察者
  • 原文地址:https://www.cnblogs.com/WUXIAOCHANG/p/10784540.html
Copyright © 2020-2023  润新知