Maven基础入门

发布于 2020-04-09  142 热度


Maven简介

什么是Maven

是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的。

Maven的好处

传统开发 Maven开发
我们划分模块时,都是使用package来进行划分。但是,当项目很大时,有很多子模块时,即使是package来进行划分,也是让人眼花缭乱 项目非常大时,可借助Maven将一个项目拆分成多个工程,最好是一个模块对应一个工程,利于分工协作。而且模块之间还是可以发送消息的
同一项目的jar包复制和粘贴到WEB/INF/lib下,导致同样的jar包重复出现在不同的工程中,一方面浪费空间,同时也让工程臃肿 借助Maven,可将jar包仅仅保存在“仓库”中,有需要该文件时,就引用该文件接口,不需要复制文件过来占用空间
如果jar包都到各个官网网站下载,会浪费很多时间,而且可能不全 借助Maven可以以规范的方式下载jar包,因为所有的知名框架或第三方工具的jar包已经按照统一的规范存放到了Maven的中央仓库中
一个jar包依赖的其他jar包可能没导入到项目而导致项目跑不起来 Maven会自动将你要加入到项目中的jar包导入,不仅导入,而且还会将该jar包所依赖的jar包都自动导入进来

相关概念

  • 仓库:存放各种包的一个位置,具体可分为三种:
    • 本地仓库:存放在计算机本地的仓库,Maven 所需要的任何构件都是直接从本地仓库获取的
    • 远程仓库(私服):存放在其他服务器,当所需包再本地仓库不存在时Maven就会去私服查找并下载到本地仓库,一般一个私服的管理者是一个公司或一个开发团队。
    • 中央仓库:Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。当所需包在本地仓库或私服不存在时,会去中央仓库下载。这个仓库由 Maven 社区管理。
  • 坐标:包在本地仓库的位置,需要指明坐标,Maven才能找到依赖的包。
    对于坐标具体包括以下几部分:

    • groupId:公司名称或者组织名称
    • artifactId:项目名称
    • version:当前项目的版本号
    • type:依赖的类型,jar或者war(默认为jar,表示依赖的是一个jar包)
    • classifier:表示在相同版本下针对不同的环境或者jdk使用的jar,可省略
    • scope:包的作用范围,可省略

工作原理

Maven最著名的(也是几乎每个人最先接触到的)就是Maven的依赖管理, 它使得我们不必再到开源项目的官网一个个下载开源组件, 然后再一个个放入classpath.
通过在pom.xml中配置所依赖的包,Maven就会自动从本地仓库引入依赖的包,如果所需包在本地仓库不存在,Maven将去上私服下载并引入,如果私服仍不存在,将去中央仓库下载。

graph LR;
M[Maven项目]--引用-->L[本地仓库]
L-.访问.->S[私服]
S-.访问.->Z[中央仓库]
L-.访问.->Z

Maven的安装配置

安装Maven前的准备

Maven依赖JDK,首先要有JDK环境,且JDK版本不可太低。

Maven下载安装

下载地址:http://maven.apache.org/
下载后解压到所需目录即可。

配置环境变量

新建一个环境变量MAVEN_HOME,值为Maven安装的根目录。
在Path环境变量中添加%MAVEN_HOME%\bin

验证是否配置成功

打开dos窗口 输入mvn –v,出现了Maven版本说明成功。

配置本地仓库地址

setting.xml是Maven环境的配置文件,需要在里面配置好本地仓库的地址等。
例如:

<?xml version="1.0" encoding="UTF-8"?>
<settings> 
    <!--需要改成自己的maven的本地仓库地址-->
    <localRepository>E:\Maven\Repository</localRepository>

    <!--阿里云镜像-->
    <mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>
</settings>

入门程序演示

Maven目录结构

Maven基础入门

pom.xml配置文件

pom.xml是Maven项目的配置文件,里面配置依赖的包和项目信息及环境等。

Maven常用命令

在dos窗口进入到Maven项目下,可对当前Maven项目进行操作。
* compile:mvn compile:编译了主目的文件
* clean:mvn clean:清理编译的文件
* test:mvn test:编译并运行test目录的代码
* package:mvn package:打包
* install:mvn install:把项目发布到本地仓库

Maven中有tomcat的运行环境,使用mvn tomcat:*可以执行tomcat操作:
* tomcat:run:mvn tomcat:run:启动tomcat

M2E插件的安装

现在在Eclipse中默认是安装了M2E插件的。
再Eclipse打开Windows->Preferences->Maven->Installations应该有一个自带的M2E插件,如果觉得版本太低,可以点击Add添加其他已经安装好的Maven环境。
然后在User Settings设置项里设定好Maven的settings.xml文件所在位置,Eclipse会自动读取settings.xml中配置的本地仓库地址,然后点击Apply and Close即可。
之后点击Window->Show View->Other->Maven Repositories可以看到本地仓库中所有的包,如果看不到包对着Local Repository点击右键重新Rebuild Index一下就可以了。

Maven项目构建

新建项目

New->Maven Project->勾选上Create a simple project(skip archetype selection)(跳过骨架)->Next->填写以下信息:
Group Id:公司或组织名
Artifact Id:项目或模块名
Version:版本
Packaging:打包方式(Jar或War...)
Name:项目名
Description:项目描述
Parent Project:父项目,可省略
填写完后->Finish

新建完后会出错,因为少了web.xml配置文件,需要手动在src/main/webapp/WEB-INF/下新建一个web.xml文件,并输入基本配置信息:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
</web-app>

可以在项目目录中看到:JRE System Library[JavaSE-1.5],编译版本为1.5。如果嫌弃版本太低可以在pom.xml中Project元素下添加以下代码来更改编译版本:

<build>
    <!-- 配置了很多插件 -->
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

添加并保存后对项目点击右键->Maven->Update Project...->OK更新以下项目就改变了编译版本。

添加Servlet

可以先试着在项目中添加一个servlet(HelloServlet),添加Servlet后servlet会报ClassNotFound错误,是因为所需包没有导入。因此需要在pom.xml中添加依赖。

添加坐标依赖

如果想导入包,可以直接在pom.xml中添加依赖元素,例如:

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.9</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

也可以在Dependencies视图中添加指定包。
打开pom.xml->点击Dependencies->Add来输入servlet加入包。注意scope属性应为provided,因为tomcat容器里是有servlet这个包的。设定了provided后,在打包时Maven不会把servlet包加入到项目,如果不设定scope为provided,会报包冲突的错误。

配置Servlet

加入之后需要在web.xml的web-app元素中加入以下元数据来配置servlet:

<servlet>
    <description></description>
    <display-name>HelloServlet</display-name>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>cn.itcast.hello.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>

运行

方式1:打开dos窗口,进入Maven项目目录,运行mvn tomcat:run命令,之后访问servlet看能否访问。
方式2:使用Eclipse,右键->Maven->Maven build...->在Goals输入tomcat:run

1
扫描二唯码在微信中打开

我一直在开辟我的天空