Maven - 初识Maven

一、概述

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

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

为什么要使用Maven?

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

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

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文件夹删掉

Maven的作用

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

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完成对项目的构建。

猜你喜欢

转载自www.cnblogs.com/Dm920/p/12386670.html