Maven基础(含手工制作maven项目以及idea创建maven项目)(图文)

Maven基础

一、maven概述

  • maven 的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
  • POM(Project Object Model):项目对象模型

常常会在maven项目下看见这样一个文件

pom.xml(什么是XML文件?),相当于把项目看成了一个对象,对这个对象的描述就存在了这个文件中。

如果要做一个Java项目,首先要确定要引入哪些依赖,比如要用@Test注解来进行单元测试,就需要导入JUnit及相关的依赖包,

如果有打印日志,或是其他日志方面的需求,就可能需要log4j以及相关的依赖包。

其次,我们要确定目录结构。如src存放java代码,resources目录存放配置文件等。

还有很多难度不大,但琐碎且耗时的事情,且不方便同一管理。

Maven就是专门为了Java项目打造的管理和构建工具。

二、maven下载与配置

  1. 下载就去官网下载

  2. 解压到自己想解压的目录,这里以E:\apache-maven-3.6.1-bin\apache-maven-3.6.1为例。

  3. 配置环境变量

  • M2_HOME

    变量值为:E:\apache-maven-3.6.1-bin\apache-maven-3.6.1\bin

  • MAVEN_HOME

    变量值为:E:\apache-maven-3.6.1-bin\apache-maven-3.6.1

  1. 命令行输入: mvn -version

    • 如果配置成功,则会看到mvn的版本号。

三、maven基本概念

3.1 仓库

仓库:顾名思义,就是用来存资源的,maven中的仓库用于存储各种jar包。

远程仓库

中央仓库:maven有一个中央仓库,里面有很多jar包,我们需要用一些jar包时,就需要去中央仓库找。

私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源。

本地仓库

本地也可以存储一些jar包,我们从中央仓库或者其他仓库下载一些资源到本地,本地仓库就存储了资源。

这样就会出现一个问题:

中央仓库服务器在外网,下载速度极慢,我们就需要配置一个 镜像站(后面说),当我们访问中央仓库时,就会重定向到国内的某个镜像站,下载速度大大提高。

3.2 坐标

坐标:顾名思义,就是用于描述仓库中资源的位置。

maven坐标由三部分组成
  1. groupId:定义当前Maven项目隶属的组织名称。(通常是域名反写,如:org.mybatis)
  2. artifactId:定义当前maven项目的名称。
  3. version:版本号。

3.3 仓库配置

本地仓库配置:

默认本地仓库在用户的.m2目录下,但是c盘是系统盘,不适合存储大量资源,于是我们依自己的喜好去配置一下仓库的地址。

  1. 找到maven安装目录下的conf目录,conf目录下有一个setting.xml文件(什么是XML文件?

  2. setting.xml文件下找到localRepository标签,将其中的示例代码复制出来,中间填上自己本地仓库的地址。

    如: <localRepository>E:\apache-maven-3.6.1-bin\apache-maven-3.6.1\maven-repo</localRepository>

远程仓库配置:

配置远程仓库,修改 maven安装目录下的:/lib/maven-model-builder-${version}.jar中的\org\apache\maven\model\pom-4.0.0.xml文件,这个pom文件是所有maven pom的父pom,所有的maven项目继承该配置,将这个文件中的 <repositories>标签下的url就可以修改远程仓库,但我们完全没有必要去修改这个文件(当然也没必要修改自己项目下的pom文件),我们只需要配置一个 镜像站 去 重定向一下我们访问的仓库,这里,我选择的是配置阿里云镜像站。

镜像站配置:

镜像站,故名思意,像一面镜子一样,里面装的资源和中央仓库基本一样,我们获取资源就不必去下载速度缓慢的国外服务器,只需到国内镜像站下载即可。

配置:

  1. 依然是conf目录下的setting文件。

  2. 找到 <mirrors>标签。

  3. 添加一段代码:

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

    这段代码的意思是:

    将这个url作为central的镜子(central是中央仓库的id),这个镜子的id是alimaven,名字叫做aliyun maven。

    名字可以重复,id不能重复。

  4. 配置成功!

四、Maven项目结构

4.1 手工构建一个maven项目

一个java项目的结构:

a-maven-project
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   └── resources
│   └── test
│       ├── java
│       └── resources
└── target

一个web项目结构:

a-maven-project
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   └── resources
│   │	└── webappp
│   └── test
│       ├── java
│       └── resources
└── target
  • a-maven-project是项目名。

  • main中java目录用来存放源码,test中Java用来存放测试源码的源码。

  • resources目录用来存放资源,配置文件。

  • 所有编译、打包生成的文件都放在target中。

所有的目录结构都是约定好的标准结构,我们千万不要随意修改目录结构。使用标准结构不需要做任何配置,Maven就可以正常使用。

之所以这个项目能称之为maven项目,是因为这个pom.xml文件。

pom文件大概长这样:

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>vip.yangsf</groupId>
    <artifactId>maventest</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

</project>

g、a、v三个标签无需再说,关键的是dependencies标签

dependency是依赖的意思,<dependencies>标签下就是放各种依赖的,对这些依赖的描述用<dependency>包裹起来,当我们用<dependency>声明一个依赖后,maven就会自动下载这个依赖包并把它放到classpath中。

现在我的结构大概长这样

在这里插入图片描述

创建好了以后,我们在命令行中,到项目目录下,输入mvn compile 命令编译这个项目。

既然说到构建命令,常用命令有这些:

mvn compile	#编译
mvn clean	#清理
mvn test	#测试
mvn package	#打包
mvn	install #安装到本地仓库

测试可以生成测试报告,打包可以将整个项目打成jar包,install可以将包装进本地仓,clean可以删除target目录。

4.2 插件创建工程

就是可以用 mvn archetype:generate命令加上一些参数用母版生成maven项目,但是手工输入比较麻烦,所以还是用idea生成方便。

4.3 idea创建maven项目

更详细的Javaweb项目创建请参阅:JavaWeb(一)开发前的准备

idea中使用maven可能会存在兼容问题,装3.6.1及以下版本就可以了(血与泪的教训)。

创建一个maven项目,有以下几个步骤:

4.3.1 创建普通maven项目
  1. 新建项目选择maven,然后下一步

    在这里插入图片描述

  2. 设置项目名称,选择项目位置,设置好坐标(一般就改一下groupId),完成

    在这里插入图片描述

    1. 文件 -> 设置中,构建工具中的几个路径如果不是自己的,就需要改一下

      在这里插入图片描述

    2. 完成

4.3.2 创建webapp项目
  1. 新建maven项目,可以勾选模板,一般选择webapp(因为一般是用于web开发)

    在这里插入图片描述

  2. 设置项目名称等

    在这里插入图片描述

  3. maven主路径要改成刚安装的maven安装路径

    在这里插入图片描述

  4. 仓库就是刚创建的maven-repo目录

  5. 完成后等待初始化

配置和之前一样。

idea中可以看到右侧边栏上有个maven,点开它就可以很方便的管理maven项目。

在这里插入图片描述

4.4 项目构建生命周期

生命周期

maven构建生命周期描述的是一次构建过程经历了多少个事件。

  • maven对项目构建的生命周期分为三步
    1. clean:清理工作
    2. default:核心工作,如编译、测试、打包、部署等
    3. site:产生报告,发布站点等

每一步中都要做很多事情,如果上一件事没做完,就不能做下一件事。

举个例子,执行test,如果test之前没有compile的话,就要先compile。

插件
  • 插件会与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能。

  • 默认maven在各个生命周期上绑定有预设功能。

  • 可以配置插件。

    <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>3.2.0</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>
                                    jar
                                </goal>
                            </goals>
                            <phase>generate-test-resources</phase>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    

    这就是配置了一个打包源码的插件,

    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>3.2.0</version>
    

    这一段是官网复制的,其他的意思是,这个插件是在generate-test-resources这个阶段执行,对源码进行打包。

之后maven的学习就可以在开发中探索。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值