博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初识Maven
阅读量:3963 次
发布时间:2019-05-24

本文共 11381 字,大约阅读时间需要 37 分钟。

第一节 Maven简介

1.1 简介

Maven:怎么读,【妹文,麦文】

Maven 翻译为"专家"、“内行”,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM,Project Object Model)概念,Maven利用一个中央仓库能管理一个项目的构建、报告和文档等步骤。
Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。

在该官网内可以找到对应的jar包,复制即可导入仓库

官网地址:

1.2 Maven核心功能

传统项目的问题:

1 需要把jar复制到项目中,繁琐
2 项目体积更大,不利于维护
3 不利于团队开发

Maven主要有两大核心功能:

1. 依赖管理。(jar包的管理)
2. 项目构建。(清理、编译、单元测试、打包、安装、部署、运行)

第二节 Maven环境配置

Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK。(略)

2.1 下载Maven库

下载地址:http://maven.apache.org/download.cgi使用版本:apache-maven-3.5.0

在这里插入图片描述

2.2 解压下载库认识Maven库目录

备注: 解压文件尽量不要放在含有中文或者特殊字符的目录下。       bin:含有mvn运行的脚本       boot:含有plexus-classworlds类加载器框架       conf:含有settings.xml配置文件       lib:含有Maven运行时所需要的java类库       LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第三方软件等简要介绍

2.3 配置Maven环境变量

  1. 右键我的电脑(或者计算机)-属性-高级系统设置-高级-环境变量-系统变量-新建【MAVEN_HOME】,值为maven的安装目录
  2. 把%MAVEN_HOME%\bin;追加到Path变量的值后面
  3. 检验是否成功:cmd-> mvn -v 或 mvn -version
  4. 修改配置文件:maven安装目录下conf目录中settings.xml
    在这里插入图片描述
    这里注意,如果IDEA的版本是2019年之后的新版本,则需要到
    【D:\IDEA\IntelliJ IDEA 2019.2.4\plugins\maven\lib\maven3\conf】目录下设置

2.4 配置Maven仓库

Maven使用仓库管理各种jar包和插件。

Maven仓库分为:本地仓库(local)、远程仓库(remote)两大类

本地仓库: 本地电脑中的仓库。默认位置为: ${user:home}/.m2/repository

远程仓库: 远程仓库又包括:中央仓库+私服+其它公共远程仓库 (比如阿里、163等)

中央仓库:是maven自带的远程仓库,默认地址:https://repo.maven.apache.org/maven2,由于默认中央仓库的服务器在国外,下载会比较慢,一般需要配置使用国内的公共远程仓库作为中央仓库镜像。注意配置了中央仓库镜像就不再走默认中央仓库。

私服:是架设在本机或者局域网中的一种特殊的远程仓库,通过私服可以方便的管理其它所有的外部远程仓库

在maven的conf目录中找到settings.xml文件【D:\Java\Maven\apache-maven-3.5.0\conf\settings.xml】

D:\Repositories\Maven
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
jdk18
true
1.8
1.8
1.8
1.8

检索顺序:先检索本地仓库--再检索远程仓库--最后检索中央仓库

具体可看下图示例
在这里插入图片描述

第三节 Maven入门

3.1 Maven程序目录结构

约定大于配置:能使用约定好的方式,就不要配置。

手动创建:

一层层的文件夹

maven_hello	 ----src -------main ----------java -------------com -----------------qf --------------------Hello.java    	   resources    	   webapp (web项目) -------test ----------java -------------com -----------------qf -------------------test ----------------------HelloTest.java ----------resources -----pom.xml
src/main/java:存放项目的.java文件 src/main/resources:存放项目资源文件。如配置文件 src/test/java:存放所有测试的.java文件.如Junit测试类 src/test/resources:测试资源文件 【target:项目输出位置(可以自动生成)】 pom.xml(maven项目核心配置文件),主要用来配置依赖

pom.xml文件】如下

4.0.0
com.qf.maven
maven_hello
1.0-SNAPSHOT
jar
junit
junit
4.12
test

使用命令创建(了解)

mvn archetype:generate -DgroupId=com.qf.maven -DartifactId=maven02  -DinteractiveMode=false -DarchetypeCatalog=internal

3.2 Maven常见命令

Maven的另一个核心功能是项目构建。

构建包括:清理、编译、测试、打包、安装、部署、运行等。这些过程都可以使用Maven命令来完成。

每个maven命令都有相对于的插件来完成。

3.2.1 clean
mvn clean:清理(删除)编译的文件使用插件:maven-clean-plugin:2.5:clean
3.2.2 compile
mvn compile:编译主目录的文件使用插件: maven-resources-plugin:2.6:resourcesmaven-compiler-plugin:3.1:compile
3.2.3 test
mvn test: 编译并运行test目录的代码使用插件:maven-resources-plugin:2.6:resourcesmaven-compiler-plugin:3.1:compilemaven-resources-plugin:2.6:testResourcesmaven-compiler-plugin:3.1:testCompilemaven-surefire-plugin:2.12.4:test
3.2.4 package
mvn package:打包项目,jar包或war包使用插件:maven-resources-plugin:2.6:resourcesmaven-compiler-plugin:3.1:compilemaven-resources-plugin:2.6:testResourcesmaven-compiler-plugin:3.1:testCompilemaven-surefire-plugin:2.12.4:testmaven-jar-plugin:2.4:jar
3.2.5 install
mvn install:安装到仓库maven-resources-plugin:2.6:resourcesmaven-compiler-plugin:3.1:compilemaven-resources-plugin:2.6:testResourcesmaven-compiler-plugin:3.1:testCompilemaven-surefire-plugin:2.12.4:testmaven-jar-plugin:2.4:jarmaven-install-plugin:2.4:install
3.2.6 其他命令

mvn deploy:部署,部署到私服

mvn tomcat:run:运行

3.3 Maven构建生命周期

1. Clean:项目构建前的清理操作2. Default(Build): 核心生命周期核心过程:编译,测试,运行,打包等等3. Site:项目站点文档创建。

3.4 Maven POM文件

POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。POM 中可以指定以下配置:    项目依赖    插件    执行目标    项目构建 profile    项目版本    项目开发者列表    相关邮件列表信息

基本的pom.xml文件

4.0.0
com.companyname.project-group
project
1.0-SNAPSHOT
jar

所有 POM 文件都需要 project 元素和三个必需元素:groupId(公司名),artifactId(项目名),version(版本号)。这个必须元素叫做坐标(GAV)

3.5 Maven引入外部依赖

pom.xml 的 dependencies 列表列出了我们的项目需要构建的所有外部依赖项。

junit
junit
4.12
test

如果Idea不自动提示已经有的jar包,则进行如下操作

在这里插入图片描述

第四节 使用开发工具创建Maven项目

4.1 Eclipse配置Maven(了解)

第一步 :安装插件

Eclipse使用Maven的前提要安装m2e插件,目前Eclipse已集成,不需要安装。

第二步:配置Maven

第一种方式1:使用开发工具自带Maven

1、在 用户目录/.m2 文件夹下 创建 settings.xml 文件,配置maven仓库的位置2、在eclipse中配置maven的用户配置文件路径,具体如下图所示:

在这里插入图片描述

第二种方式2: 使用自己的maven文件

1. 首先使用自己的Maven安装文件替换掉Eclipse插件的Maven,如下图:

在这里插入图片描述

2.配置用户自己maven的配置文件

在这里插入图片描述

第三步:Eclipse创建Maven工程
New ——Maven Project ——选择create a Simple Project(跳过模版)-- 填写工程信息--完成即可      备注:工程创建完成后有错误,缺少web.xml文件,右键项目-JavaEE Tools-Generate Deployment            Discriptor Stub即可生成web.xml文件。填写的工程信息如下图:

在这里插入图片描述

Maven项目说明

src/main/java:存放项目的.java文件      src/main/resources:存放项目资源文件。如何Spring,Hibernate配置文件      src/test/java:存放所有测试的.java文件.如Junit测试类      src/test/resources:测试资源文件      target:项目数出位置(可以自动生成)      pom.xml(maven项目核心配置文件)       pom.xml默认内容介绍:        
4.0.0
com.sky
FirstMaven
1.0
war

添加依赖

上网搜索依赖进行添加: 推荐网站:http://mvnrepository.com/示例:
mysql
mysql-connector-java
5.1.41
添加到项目的pom文件内容说明(切换pom.xml到Dependencies目录下): type:类型 取值说明: jar:jar包 Scope:声明jar包的存活时间 取值说明: 1、provided:编译和测试时需要 2、compile:编译、测试、运行、打包需要 3、runtime:测试、运行、打包需要 4、test:测试 5、system:编译和测试时需要,显示引用,Maven不会检索

4.2 Idea配置Maven

第一步 :安装插件

Idea自带maven插件,目前Idea不需要安装。

第二步:配置Maven
在Idea的启动初始界面,打开:Configure-->Settings-->Build,Execution,Deployment-->Maven如下图:

在这里插入图片描述

在这里插入图片描述

在Importing中,选择自动导入依赖

在这里插入图片描述

第三步:Idea创建Maven工程

​ (1):选择maven

在这里插入图片描述
在这里插入图片描述

(2):项目信息

在这里插入图片描述

(3):项目位置,点击完成。

在这里插入图片描述

项目说明

在这里插入图片描述
在这里插入图片描述

pom.xml文件如下

4.0.0
com.qf.maven
hellomaven
1.0-SNAPSHOT

添加依赖

上网搜索依赖进行添加: 推荐网站:http://mvnrepository.com/示例:
mysql
mysql-connector-java
5.1.41
添加到项目的pom文件内容说明(切换pom.xml到Dependencies目录下): type:类型 取值说明: jar:jar包 Scope:声明jar包的存活时间 取值说明: 1、provided:编译和测试时需要,打包和运行不需要 例如servlet-api jsp-api 2、compile(默认):编译、测试、运行、打包需要 druid dbutils fileupload 3、runtime:测试、运行、打包需要 mysql驱动 4、test:测试 例如junit 5、system:编译和测试时需要,显示引用,Maven不会检索
创建java类及测试类使用命令编译测试注意:如果选择骨架创建的是web项目需要更改两个地方: 1 添加 java 和resources目录并更改为 source root、 resources root  2 修改web.xml文件版本 3.1

第五节:使用Maven优化项目

第一步:创建项目

骨架选择web项目:maven-archetype-webapp

第二步:在main下创建 java目录、resources目录

创建完毕后,一般是不可用的文件夹如果转为包,需要点击右边栏的【MavenProjects】进行更新;或者选择项目名目录,右键,选择Maven,展开后选择Reimport

【resources】拼写一定要正确,一般用于存储【properties】等配置文件

【java】目录存放java代码

【webapp】下存放web代码
在这里插入图片描述

把目录分别设置为source root、 resources root

第三步:修改web.xml版本

在这里插入图片描述

然后再点击【+】添加xml,再次apply应用即可

第四步:把静态资源复制到webapp目录下

删除WEB-INF下的lib目录,因为我们只需要maven的配置依赖即可

第五步:pom文件引入外部依赖

如何把第三方jar包安装的本地仓库

安装指定文件到本地仓库命令:	mvn install:install-file	-DgroupId=
: 设置项目代码的包名(一般用组织名) -DartifactId=
: 设置项目名或模块名 -Dversion=1.0.0 : 版本号 -Dpackaging=jar : 什么类型的文件(jar包) -Dfile=
: 指定jar文件路径与文件名(同目录只需文件名)

修改xml配置

UTF-8
1.8
1.8
junit
junit
4.12
test

手动安装jar包

有的jar包,无法在官网找到,则需要手动导入
比如安装ValidateCode.jar包
先在validatecode包目录下,在dos命令中,输入如下内容即可

mvn install:install-file -DgroupId=com.qf -DartifactId=validatecode -Dversion=1.0.0 -Dpackaging=jar -Dfile=ValidateCode.jar

然后再依赖中配置。

com.qf
validatecode
1.0.0

依赖信息如下,可以根据需求从官网查找进行添加:

junit
junit
4.12
test
javax.servlet
javax.servlet-api
3.1.0
provided
javax.servlet.jsp
javax.servlet.jsp-api
2.3.1
provided
javax.servlet
jstl
1.2

依赖范围:

A 依赖B,需要再A的pom.xml文件中添加B的坐标,添加坐标时需要指定依赖范围,依赖范围包括:

(1)compile:编译范围, 编译范围的依赖会在编译,测试,运行,打包(war)都会使用依赖jar包

(2)provided:提供依赖,provided依赖在编译,测试时需要,运行,打包都不会包含。

(3)runtime:运行依赖,runtime依赖在运行、测试、打包的需要,但在编译的时候不需要,比如:jdbc的驱动包

(4)test:测试依赖,在编译和运行时不需要,他们只有在测试编译和测试运行时使用, 比如junit,也不会被打包

(5)system:系统依赖,system依赖与provided类似,但是你必须显示的提供一个对于本地系统中jar文件的路径,需要指定systemPath磁盘路径,system依赖不推荐使用。

依赖范围 编译 测试 运行 打包(war) 例子
compile yes yes yes yes beanutils、fileupload
test no yes no no junit
provided yes yes no no serlvet-api、jsp-api
runtime no yes yes yes jdbc驱动
system yes yes no no 本地jar包。maven仓库之外的jar包
注意:打包jar包时,不会包含任何依赖包的。默认依赖范围:compile依赖范围由强到弱的顺序是:compile-->provided-->runtime-->test

第六步:运行

运行有两种方式:

第一种方式:添加tomcat配置(和之前一样)

可以使用任意版本的tomcat, 比较灵活

比对和之前项目的文件大小不使用maven大概:37M使用maven大概:4M

第二种方式:使用插件运行

版本固定,相对配置比较复杂

(1)执行maven目标:tomcat:run

org.codehaus.mojo
tomcat-maven-plugin
1.1
8899
/myxiaomi8899

(2)执行maven目标:tomcat7:run

org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
6677
/myxiaomi6677

第六节:maven Helper插件

直接可以右键进行maven run运行

在这里插入图片描述

第七节:配置自定义maven骨架

1. 创建一个web项目或者quick项目
创建对应的文件夹,必须有文件在其中,否则空文件夹将被忽略
在这里插入图片描述
2. web.xml文件和pom.xml文件的配置

pom.xml文件的配置根据自己需求

3. 生成骨架

在这里插入图片描述

在项目目录下,输入命令:
mvn archetype:create-from-project

然后处理一下target目录【也可以不处理】

务必删除其中一些无用目录,其中是当前项目的状态,会影响基于此骨架创建的项目
在这里插入图片描述
再删除 xxx.iml 文件
在这里插入图片描述
4. 安装骨架

在【target > generated-sources > archetype】目录下执行【mvn install】,即可将骨架安装到本地maven仓库

骨架位置,骨架位置,groupid 和 artifactid,打开xml可以看到相关信息
在这里插入图片描述
5.使用骨架
添加自己的骨架,基于自己的骨架创建项目
在这里插入图片描述
6.移除骨架

如果自定义骨架出现问题,或不再需要,即可如下

将对应的项目也删除,在仓库中将对应骨架删除
C:\Users\rj.IntelliJIdea2017.3\system\Maven\Indices\UserArchetypes.xml
其中记录了idea中会显示在骨架列表中的 自定义骨架内容
从中删除自定义骨架配置,在IDEA中就不再出现自定义骨架。

7. 我们还可以直接修改已有骨架

在该路径下【D:\Java\Repository\maven\org\apache\maven\archetypes\maven-archetype-quickstart\1.4】

我们可以修改quickstart的jar包

在这里插入图片描述
使用解压工具打开

在这里插入图片描述

修改该文件

src/main/java
src/main/resources
src/test/java

修改pom.xml文件即可

在这里插入图片描述

我们还可以直接创建文件夹,但是必须里面有文件。

转载地址:http://npgzi.baihongyu.com/

你可能感兴趣的文章
SQL - SQL Server中如何获取当前年,月,日,时,分,秒
查看>>
SQL - SQL Server 性能优化之SQL语句总结
查看>>
Docker - docker-compose常用命令
查看>>
SQL - SQL Server判断字符串中是否有中文
查看>>
SQL - SQL Server查询近7天的连续日期
查看>>
SQL - SQL Server中如何取年、月、日 -DATEPART函数
查看>>
SQL - SQL Server 一列或多列重复数据的查询,删除
查看>>
NET - .NET Core WebAPI + Vue + Axios 导出Excel / CSV
查看>>
NET - NET Core Quartz.net开源作业调度框架使用详解
查看>>
NET - NET Core quartz.net 时间表达式----- Cron表达式详解
查看>>
NET - .NET Core 之 Abp Audit-Logging
查看>>
NET - .NET Core 之 Abp AuditLog 将不同的Controller实体的审计日志存储到不同的Table
查看>>
NET - .NET Core 之 Azure Key Vault 密钥保管库的使用
查看>>
NET - .NET Core 之 Abp 整合 Quartz
查看>>
Docker - Docker Desktop(WSL2)修改镜像存储位置
查看>>
NET - NET Core使用Log4net的SqlServer AdoNetAppender 报程序集错误
查看>>
NET - NET Core中使用Log4net输出日志到数据库中去
查看>>
NET - NET Core 迁移nuget包缓存到指定位置
查看>>
Spring - SpringBoot 集成 swagger2
查看>>
SQL - 深入理解MySQL索引之B+Tree
查看>>