目录结构:

一、Maven简介

二、Maven核心概念

三、Maven的使用

四、Maven在IDEA中的应用

五、依赖管理

六、Maven常用设置

---------------------------------------分割线:正文--------------------------------------------------------

 一、Maven简介

1、Maven可以管理jar包文件,自动下载jar和他的文档,源代码。

2、Maven可以管理jar包之间的依赖、jar包的版本

3、Maven的构建:

(1)清理:把之前项目编译的东西删除掉。

(2)编译:把程序代码编译为执行代码,java-class文件

(3)测试:maven可执行测试程序代码,验证你的功能是都正确

(4)报告:生成测试结果的文件

(5)打包:把项目中所有class文件,配置文件等所有资源放到一个压缩文件中,java程序压缩文件通常是jar或war包

(6)安装:把打包的文件安装到本地仓库

(7).部署:把程序安装好可以执行

4、Maven核心概念:

(1)POM:pom.xml,项目对象模型,控制maven构建项目的过程,管理jar依赖

(2)约定的目录结构:maven项目的目录和文件的位置都是规定的

(3)坐标:唯一的字符串,用来表示资源

(4)依赖管理:管理项目中使用的jar文件

(5)仓库管理:资源存在的位置

(6)生命周期:maven构建项目的过程

(7)插件和目标:执行maven构建的时候用的工具

(8)继承与聚合:类似java语法

5、maven工具的安装和配置:

(1)官网下载:

https://maven.apache.org/download.cgi

(2)解压安装包:非中文目录

子目录bin:执行程序mv.cmd

conf:maven工具配置文件settings.xml

(3)配置环境变量:

在系统的环境变量中新增maven工具的安装目录,并在path中新增:

MAVEN_HOME -> D:\Program Files (x86)\apache-maven-3.8.1

path -> %MAVEN_HOME%\bin\

验证配置成功:cmd -> mvn -v

二、Maven核心概念

1、maven约定的目录结构(项目-Hello)

Hello/

---/src

 ------/main              #主程序java代码和配置文件

----------/java          #程序包和包中的java文件

----------/resource   #java程序中使用的配置文件

------/test                #放测试程序代码和文件的(可以没有)

----------/java          #测试程序包和包中的java文件

----------/resource  #测试java程序中使用的配置文件

---/pom.xml maven的核心文件(必有)

PS D:\javaProjects> tree Hello
卷 软件 的文件夹 PATH 列表
卷序列号为 00000073 AEF0:3DBD
D:\JAVAPROJECTS\HELLO
└─src
├─main
│ ├─java
│ └─resources
└─test
├─java
└─resources
PS D:\javaProjects>

2、仓库:

(1)仓库概念:存在maven使用的jar和项目使用的jar

(2)仓库分类:本地仓库与远程仓库

(3)仓库的使用:仓库的使用不需人为参与,需要jar包时访问顺序:本地仓库->私服->镜像->中央仓库

3、POM:Maven的灵魂

(1)modelVersion:目前的版本4.0

(2)groupId:组织名称,一般为公司域名倒写(+项目名称)

(3)artifactId:项目名称

(4)version:项目版本号,通常为-SNAPSHOT

(5)packaging:项目打包类型:jar、war、rar、ear、pom,默认jar

(6)<dependencies><!- -依赖- -相当于import></dependencies>
(7)properties:定义一些配置属性,如项目编码方式等

(8)bulid:maven构建时一些配置信息,如编译插件啊的jdk版本

其中:groupId+artifactId+version为坐标

https://mvnrepository.com/ 搜索使用的中央仓库

4、Maven生命周、Maven常用命令、Maven插件:

(1)maven的生命周期即Maven构建项目的过程:清理、编译、测试、报告、打包、安装、部署的过程

(2)maven的命令:Maven可以使用命令,完成项目声明周期的执行

(3)maven的插件:maven命令的执行,通过相应的jar来完成

清理(会删除原来编译和测试的目录),即target目录,但是

三、Maven的使用

1、mvn compile:编译src/main目录下所有java文件

(1)编译时下载JAVA插件

(2)下载插件,存放在本机默认仓库:C:\Users\Mr.White\.m2\repository

(3)结果在项目根目录下生成target目录,maven编译的java程序,class文件。

D:\javaProjects\Hello>mvn compile
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------< com.testbk:testjava >-------------------------
[INFO] Building maven 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ testjava ---
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ testjava ---
[INFO] Nothing to compile - all classes are up to date
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.750 s
[INFO] Finished at: 2021-04-21T22:20:01+08:00
[INFO] ------------------------------------------------------------------------

2、设置本机存放资源的目录位置:

修改maven配置文件,安装目录:/conf/setting.xml文件,新增

<localRepository>D:/maven-repository</localRepository>

3、添加mysql资源依赖

pom文件内添加:

    <dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version>
</dependency>
</dependencies>

4、Maven常用命令:(必须在pom文件所在目录下执行)

(1)mvn clean:清理(删除原来编译和测试的目录,即target目录,但是已经install到仓库里的包不会删除)

(2)mvn compile:编译主程序(会在当前目录下生成一个target,里面存放编译主程序之后生成的字节码文件)main/java目录下程序

(3)mvn test-compile:只编译test程序 test/java目录下的程序

(4)mvn test:测试

clean到test的部署参考:Junit单元测试

(5)mvn package:打包主程序,会编译、测试并打包主程序(scr/main下所有java程序),放入target目录下

[INFO] Building jar: D:\javaProjects\Hello\target\testjava-0.0.1-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.630 s
[INFO] Finished at: 2021-04-25T22:17:33+08:00
[INFO] ------------------------------------------------------------------------

(6)mvn install:安装主程序,会把本工程打包,并保存到本地仓库中。

[INFO] Installing D:\javaProjects\Hello\target\testjava-0.0.1-SNAPSHOT.jar to C:\Users\Mr.White\.m2\repository\com\testbk\testjava\0.0.1-SNAPSHOT\testjava-0.0.1-SNAPSHOT.jar
[INFO] Installing D:\javaProjects\Hello\pom.xml to C:\Users\Mr.White\.m2\repository\com\testbk\testjava\0.0.1-SNAPSHOT\testjava-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.078 s
[INFO] Finished at: 2021-04-25T22:44:03+08:00
[INFO] ------------------------------------------------------------------------

(7)mvn deploy:部署主程序,会把本地工程打包,按照坐标保存到本地库,并且还保存到私服仓库中。(使用较少)

5、插件配置:build :maven-compiler-plugin

<build>
<plugins>
<plugin>
<!-- 指定maven编译的jdk版本,如果不指定,maven3默认用jdk 1.5 maven2默认用jdk1.3 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>

四、Maven在IDEA中的应用

1、idea中设置maven

idea中内置了maven,但一般不使用内置的,因为修改配置不方便;所以使用自己安装的maven,需覆盖idea中默认的设置,让idea指定maven安装位置等信息

idea配置入口:

(配置当前工程)File - > Settings - > Build,Execution,Deployment - > Build Tools -> Maven

(配置以后新建工程)File -> New Projects Settings -> Settings for New Projects -> Build,Execution,Deployment - > Build Tools -> Maven

Maven home directory:maven的安装目录

User settings file:mavne安装目录conf/setting.xml配置文件

Local respository:本机仓库的目录位置

Running -> JRE-1.8;VM Options:-DarchetypeCatalog=internal(提高maven创建效率,不再下载)

2、idea创建项目:

普通java项目:new->project->Empty Project->新建工程->Finish

maven模块:Module->New Module->Maven->Greate from archetype->maven-archetype-quickstart->新建工程->填写maven工程的坐标->Finish

等待maven自动创建工程模板

main目录下手动创建resource包,并设置Make Directory as->Resources Root

test目录下手动创建resource包,并设置Make Directory as->Test Resources Root

 3、idea单元测试

分别在main目录与test目录中建立程序与测试代码

package com.testbk;

public class HelloMaven {
public int add(int n1,int n2){
return n1+n2;
}
public static void main(String[] args) {
HelloMaven hello = new HelloMaven();
int res = hello.add(10,20);
System.out.println("10+20="+res);
}
}
package com.testbk;

import org.junit.Assert;
import org.junit.Test; public class TestHelloMaven { @Test
public void testAdd(){
System.out.println("========testAdd 测试add方法=================");
HelloMaven hello = new HelloMaven();
int res = hello.add(10,20);
//判断结果是否正确
Assert.assertEquals(30,res);
}
}

运行程序测试通过:

 4、idea-maven工具窗口

使用工具窗口可完成:clean、compile、test、package、install等操作

 5、idea使用技巧

(1)pom文件存在问题:

pom.xml右键->Maven->Reimport(单个项目刷新)

或-右侧Maven窗口->刷新(会刷新全部项目)

(2)删除模块与导入模块

右上角:Project Structure->+/-

 五、依赖管理

 1、依赖的范围:

使用scope表示:表示依赖使用的范围,即在maven构建的项目中的哪些阶段中起作用。

值包含compile、test、provided(提供者),默认采用compile(所有阶段)。如junit的依赖范围是test

    <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>

2、举例使用:Mybatis-sprint/druid

    <dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>2.0.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>

六、Maven常用设置

1、属性设置:<properties>与</properties>内

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> :maven构建项目使用的编码方式,避免中文乱码

<maven.compiler.source>1.7</maven.compiler.source>:编译代码使用的jdk版本

<maven.compiler.target>1.7</maven.compiler.target>:运行程序使用的jdk版本

2、全局变量:

自定义的属性,在<properties>中通过自定义标签声明变量(标签名就是变量名),在pom.xml文件中的其他位置,使用${标签名}使用变量的值

自定义全局变量一般是定义依赖的版本号,当你的项目中要使用多个相同的版本号,

先使用全局变量定义,在使用${变量名},如spring框架

  <properties>
<!--自定义变量,表示版本号-->
<spring.version>5.3.6</spring.version>
</properties>
    <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>

3.指定资源的插件

在<build></build>中指定资源的插件resources

(1)默认没有使用resources的时候,maven执行编译代码的时候,会把src/main/resources目录中的文件拷贝至target/classes目录中。

  对于src/main/java目录下的非java文件不处理,不拷贝到target/classes目录中

(2)我们的程序有需要把一些文件放在src/main/java目录中,当执行java程序时,需要用到src/main/java目录中的文件,

  需要告诉maven在mvn compile src/main/java目录下的程序时,需要把文件一同拷贝到target/classes目录中。

  此时就需要在<build>中加入<resources>

    <resources>
<resource>
<directory>src/main/java</directory><!-- 所在的目录-->
<includes><!--包含目录下的.properties,.xml文件都会扫描到-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!--filtering 选项false不启用过滤器,*.property已经起到过滤的作用-->
<filtering>false</filtering>
</resource>
</resources>

maven自动化构建工具的更多相关文章

  1. 浅谈maven自动化构建工具

    转载https://blog.csdn.net/zxm1306192988/article/details/76209062 Maven是什么[what] 1.Maven 是 Apache 软件基金会 ...

  2. 01_自动化构建工具之Maven

    目前技术中存在问题(为什么使用Maven): 一个项目就是一个工程: 缺陷:如果项目太过庞大,就不适合使用package来划分层次,最好是一个模块就是一个工程,利于分工协作. 解决:Maven可以将一 ...

  3. 自动化构建工具maven

    Maven是目前最流行的自动化构建工具,对于生产环境下多框架.多模块整合开发有重要作用.Maven 是一款在大型项目开发过程中不可或缺的重要工具. 一.什么是构建? 构建并不是创建,创建一个工程并不等 ...

  4. Java-Maven-Runoob:Maven 自动化构建

    ylbtech-Java-Maven-Runoob:Maven 自动化构建 1.返回顶部 1. 自动化构建定义了这样一种场景: 在一个项目成功构建完成后,其相关的依赖工程即开始构建,这样可以保证其依赖 ...

  5. 玩转SpringBoot之MyBatisplus自动化构建工具

    使用MyBatisplus自动化构建项目 为什么要用这个? 方便 因为之前那种方式让我用起来不爽了:mybatis逆向工程(MyBatis Generator) 能紧密的贴合mybatis,并且MyB ...

  6. 【第十四篇】- Maven 自动化构建之Spring Cloud直播商城 b2b2c电子商务技术总结

    Maven 自动化构建 自动化构建定义了这样一种场景: 在一个项目成功构建完成后,其相关的依赖工程即开始构建,这样可以保证其依赖项目的稳定. 比如一个团队正在开发一个项目 bus-core-api, ...

  7. Jenkins敏捷开发 自动化构建工具

    一.序言 Jenkins 是一款自动化构建工具,能够基于 Maven 构建后端 Java 项目,也能够基于 nodejs 构建前端 vue 项目,并且有可视化 web 界面. 所谓自动化构建是按照一定 ...

  8. gulp自动化构建工具

    gulp    自动化构建工具,实时监控.代码合并.压缩... http://www.gulpjs.com.cn/     中文网 http://gulpjs.com/plugins/     英文网 ...

  9. 前端自动化构建工具gulp的使用总结

    前端自动化构建工具gulp的使用总结 博主最近偶的空闲,在此对gulp的使用做一个总结,让小伙伴知道如何合理的使用gulp以及gulp的使用技巧. 谈到gulp,有人可能就会想到另外一个构建工具gru ...

随机推荐

  1. Centos7修改Docker默认存储位置

    一.前言 Centos7安装docker之后,默认的镜像及容器存储路径为/var/lib/docker,可以使用命令docker info查看. 但是该路径默认使用的是系统盘的存储,如果挂载了数据盘, ...

  2. Linux磁盘分区格式化和扩容

    Note:根据各系统上磁盘的类型不同,磁盘命名规则也会不同:例如/dev/xvd,/dev/sd,/dev/vd,/dev/hd 目录 磁盘格式化 MBR格式 GPT分区 磁盘扩容 MBR格式扩容 G ...

  3. Image Super-Resolution via Sparse Representation——基于稀疏表示的超分辨率重建

    经典超分辨率重建论文,基于稀疏表示.下面首先介绍稀疏表示,然后介绍论文的基本思想和算法优化过程,最后使用python进行实验. 稀疏表示 稀疏表示是指,使用过完备字典中少量向量的线性组合来表示某个元素 ...

  4. Java 面向对象 04

    面向对象·四级 多态的概述及其代码实现 * A:多态(polymorphic)概述 * 事物存在的多种形态 * B:多态前提 * a:要有继承关系 * b:要有方法重写 * c: 要有父类引用指向子类 ...

  5. css实现鼠标滑过出现从中间向两边扩散的下划线

    这个效果一开始我是在华为商城页面上看到的,刚开始还以为挺复杂,实现的时候还有点没头绪.不过,还好有百度,借此记录一下我在导航条上应用的实现方法. 主要是借助了伪元素,代码如下: <div cla ...

  6. CVE-2017-7529-Nginx越界读取缓存漏洞

    漏洞参考 https://blog.csdn.net/qq_29647709/article/details/85076309 漏洞原因 Nginx在反向代理站点的时候,通常会将一些文件进行缓存,特别 ...

  7. CVE-2018-2628-WLS Core Components 反序列化

    漏洞参考 https://blog.csdn.net/csacs/article/details/87122472 漏洞概述:在 WebLogic 里,攻击者利用其他rmi绕过weblogic黑名单限 ...

  8. java基础:数据类型拓展

    public static void main(String[] args) { //单行注释 //输出hello,world! //System.out.println("hello,wo ...

  9. java基础详解-集合

    一.集合组成 java集合主要由Map和Collection组成,Collection主要类图如下(图片来源于网络,懒得画图): 从上图中能很明显的看出来Collection下主要是Set.List和 ...

  10. 仿MSDN的帮助系统

    作为软件开发人员,软件做好后,接下来就是编写文档.我自己也是做软件的,经常有用户询问软件的安装与使用, 我一直很喜欢微软的MSDN帮助系统,简介.大气,使用方便. 网上也找了很久,感觉一直没有合适的, ...