zoukankan      html  css  js  c++  java
  • Maven

    一、概述

    Maven(翻译为"专家","内行")是Apache下的跨平台的项目管理工具,是一款软件项目管理和理解工具。

    它由纯Java语言开发,基于项目对象模型(POM)的概念,通过添加一小段描述来管理项目的构建。可以帮助我们更方便的管理和构建Java项目。

    1)为什么要使用Maven?

    以前在用Java开发一个项目时,往往需要引入几十或者上百个Jar包,那么这些Jar可能分散在不同的地址,我们需要一个一个去下载,然后在导入到我们项目中!有时一个Jar包找到合适的版本可能需要几个小时。更让人痛苦的是一个大项目开发需要多人协同开发。那么项目依赖的Jar包就需要有一份公共的来解决不同人引入相同的Jar不同版本的依赖从而导致冲突。

    现在使用Maven来构建,Maven通过一个POM文件来管理项目依赖,只要在POM中加入想要的Jar包依赖,Maven会在本地仓库中查找依赖包。如果本地没有找到就会从配置的私服中下载依赖,没有配置私服Maven就会从Maven的中央仓库(99%的开源项目都可以在Maven中央仓库中找到)中去找到指定版本的Jar包。

    2)Maven的优点

    ● jar包管理
    ● maven是跨平台的可以在window、linux上使用
    ● 清晰的项目结构
    ● 多工程开发,将模块拆分成若干工程,利于团队协作开发
    ● 一键构建项目:使用命令可以对项目进行一键构建,操作系统中无需安装eclipse和tomcat

    ① jar包管理

    从Maven中央仓库获取标准的规范的jar包以及相关依赖的jar包,避免自己下载到错误的jar包;
    本地仓库统一管理jar包,使jar包与项目分离,减轻项目体积。

    Maven项目获取jar包的方式:

    Maven项目获取jar包的方式

     - 1、Maven项目通过坐标的方式从本地仓库获取jar包

    - 坐标:由公司/组织名(groupId) + 项目名/子项目名(artifactId) + 版本号(version)组成;
    - 本地仓库:存放很多jar包,供Maven项目使用;
    - Maven通过建立本地仓库索引,可以快速的找到符合要求的jar包,从而解决效率问题;
    - 多个Maven项目都可以从本地仓库获取jar包;
    - 设置本地仓库:maven根目录 -> conf -> settings.xml,将localRepository标签中的路径替换成自己本地仓库的路径;

    设置本地仓库

     - 2、Maven三种仓库概念:本地仓库、远程仓库、中央仓库

     - 3、设置阿里云Maven仓库镜像

     在settings.xml文件中的mirrors下添加mirror标签

    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>

     ② maven由纯Java语言开发,是跨平台的可以在window、linux、mac上使用

     ③ 清晰的项目结构

    项目打包时maven自动帮我们创建的目录,里面就是打包好的项目文件

    MavenProjectRoot(项目根目录)
       |----src:源代码和测试代码的根目录
       |     |----main:应用代码目录
       |     |         |----java:源代码目录
       |     |         |----resources:配置文件目录,存放项目资源文件,如spring, hibernate配置文件
       |     |----test
       |     |         |----java:测试代码目录
       |     |         |----resources:存放测试使用的配置文件,如spring, hibernate配置文件
       |----target:项目打包时maven自动帮我们创建的目录,里面就是打包好的项目文件
       |----pom.xml:这就是配置项目依赖的地方。一次配置,不管以后代码给谁,都可以运行起来

     ④ 使用Maven将大型项目按照模块拆分成若干工程,不同的团队维护各自的工程,可大大的提升开发效率

     - 1、大型商城项目按业务分成商品管理、用户管理、订单管理等等模块。

    大型项目,分模块开发

     - 2、中小型项目按照传统项目分为Web、Service、Dao层,依照员工自身的业务能力分配工作。

    中小型项目分层开发

     ⑤ 一键构建项目:使用命令可以对项目进行一键构建,操作系统中无需安装eclipse和tomcat。

     - 1、创建项目根文件夹,并在该目录中创建pom.xml文件

    <project xmlns="http://maven.apache.org/POM/4.0.0" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        
        <!--所有的Maven项目都必须配置这四个配置项-->
        <modelVersion>4.0.0</modelVersion>
        <!--groupId指的是项目名的项目组,默认就是包名-->
        <groupId>cn.alin</groupId>
        <!--artifactId指的是项目中的某一个模块,默认命名方式是"项目名-模块名"-->
        <artifactId>hello-maven</artifactId>
        <!--version指的是版本,这里使用的是Maven的快照版本-->
        <version>SNAPSHOT-0.0.1</version>
        
    </project>
    pom.xml

     - 2、编写 Java 类文件,Maven 项目规定,所有的 *.java 文件必须放在 src 目录下的 main 目录下的 java 目录中。

    在 HelloMaven 项目根目录中创建一个 src 目录,然后在 src 目录中创建 main 目录,在 main 目录中再创建 java 文件夹

    public class Test{
        public static void main(String [] args){
            System.out.println("hahahahahahahahhahaha!!!");
        }
    }
    Test.java

     - 3、使用Maven编译Test.java,首先进入到项目根目录,然后使用命令”mvn compile”进行编译

    使用Maven编译完成之后,在项目根目录下会生成一个target文件夹,target文件夹中的classes文件夹存放的就是编译成功后生成的.class文件

     - 4、使用"mvn clean"命令清除编译结果,也就是把编译生成的target文件夹删掉

    3)Maven的作用

    ● Maven 统一集中管理好所有的依赖包,不需要程序员再去寻找。
    ● 对应第三方组件用到的共同 jar,Maven 自动解决重复和冲突问题。
    ● Maven 作为一个开放的架构,提供了公共接口,方便同第三方插件集成。程序员可以将自己需要的插件,动态地集成到 Maven,从而扩展新的管理功能。
    ● Maven 可以统一每个项目的构建过程,实现不同项目的兼容性管理

    4)Maven的好处

    ① 一步构建:一个命令即可启动。
    ② 依赖管理:对jar包统一管理,避免冲突等问题
    ③ 跨平台:可在windows及linux下运行
    ④ 有利于提高大型项目的团队开发效率
    ⑤ 越来越多的公司使用maven

    二、Maven常用命令及生命周期

    clean:清理,编译后的目录;
    ② compile:编译,只编译main目录,不编译test中的代码;
    ③ test-compile:编译test目录中的代码;
    ④ test:运行test里边的代码;
    ⑤ package:打包  - | java项目->打成jar包 | - | web项目->打成war包 |
    ⑥ install:发布项目到本地仓库,用在打jar包上,打成jar包可以被其他项目使用;
    ⑦ tomcat:run:一键构建项目;

    ● Maven命令的生命周期:

    ① Clean 生命周期:clean;
    ② Default 生命周期:compile、test-compile、test、package、install
    ③ Site 生命周期:site命令,生成项目描述文档静态页;
    ④ 不同的生命周期可以一起执行,例如 clean compile 先clean 再 compile;

    ● Maven命令的执行顺序:

    ① 在相同生命周期中的命令才会受执行顺序的影响;
    ② Default生命周期中的命令执行顺序:
    compile <- test-compile <- test <- package <- install

    三、Maven项目与传统项目的区别

    1)依赖管理

    一个java项目需要外部的第三方jar包来进行支持。我们说这个java项目依赖了这些jar包。

    依赖管理就是将项目所依赖的jar包按照一定规则进行规范化管理。

    ● 传统项目的依赖管理

    传统的依赖管理就是程序员需要什么jar包,去网上进行下载,然后手动添加到工程中。

    缺点:

    jar包从网上不好找
    jar包没有进行统一管理,容易造成jar包重复及版本冲突
    jar包全部添加到工程中,造成工程过大

    ● maven项目的依赖管理

    maven项目有一个文件叫pom.xml。我们通过在此文件中配置jar包的坐标即可将jar包引入到工程中。Jar包的坐标可从maven仓库中获取。

    好处:

    通过pom配置来引入jar包,避免了jar包的版本冲突。
    Maven团队维护了一个jar包仓库,十分全,避免了去网上寻找jar包的尴尬,节省时间。

    2)项目构建

    项目构建是一个项目从编写源代码到编译,测试,运行,打包,部署,运行的过程。

    ● 传统项目构建过程

    ① 在eclipse中新建一个WEB工程。
    ② 进行编码及编写配置文件
    ③ 对源代码进行编译运行,生成class文件
    ④ 打成war包,部署至tomcat

    ● Maven项目构建过程

    一个命令tomcat:run完成对项目的构建。
  • 相关阅读:
    Remote API(RAPI)之 文件管理
    vue前端框架

    托马斯彩色回旋
    VUE?
    cookie与session
    ajax前后端分离
    djangoIII
    Django少年
    django三板斧
  • 原文地址:https://www.cnblogs.com/Dm920/p/12386670.html
Copyright © 2011-2022 走看看