0%

Maven安装与配置

  • 安装
  • IDEA配置Maven

Maven

Maven介绍

1
2
3
4
5
6
7
8
9
# 目前无论使用IDEA还是Eclipse等其他IDE,使用里面ANT工具。
# ANT工具帮助我们进行编译,打包运行等工作。
# Apache基于ANT进行了升级,研发出了全新的自动化构建工具Maven。
# Maven是Apache的一款开源的项目管理工具。
# 以后无论是普通javase项目还是javaee项目,我们都创建的是Maven项目。
# Maven使用项目对象模型(POM-Project Object Model,项目对象模型)的概念,
# 可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
# 在Maven中每个项目都相当于是一个对象,对象(项目)和对象(项目)之间是有关系的。
# 关系包含了:依赖、继承、聚合,实现Maven项目可以更加方便的实现导jar包、拆分项目等效果。

本地仓库

本地仓库指本机的一份拷贝,用来缓存远程下载,包含你尚未发布的临时构件。

远程仓库

1
2
3
4
5
# 不在本机中的一切仓库,都是远程仓库:分为中央仓库和本地私服仓库
# 远程仓库指通过各种协议如file://和http://访问的其它类型的仓库。
# 这些仓库可能是第三方搭建的真实的远程仓库,用来提供他们的构件下载(例如repo.maven.apache.org和uk.maven.org是Maven的中央仓库)。其它“远程”仓库可能是你的公司拥有的建立在文件或HTTP服务器上的内部仓库(不是Apache的那个中央仓库,而是你们公司的私服,你们自己在局域网搭建的maven仓库),用来在开发团队间共享私有构件和管理发布的。
# 默认的远程仓库使用的Apache提供的中央仓库:
# https://mvnrepository.com/

安装

win10安装Maven

官网下载


目录结构:

  • bin目录 ==》存放的是执行文件 ==》命令
  • conf目录:settings.xml ==》maven的核心配置文件/全局配置文件

注:如果没有.m2目录 ,自己手动执行mvn命令 mvn help:system

Linux安装

下载、解压、移动

1
2
wget https://dlcdn.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -zxf apache-maven-3.6.3-bin.tar.gz -C /local/server/maven

配置文件底部添加 /etc/profile

1
2
MAVEN_HOME=/local/server/maven
export PATH=${MAVEN_HOME}/bin:${PATH}

IDEA中配置Maven

在IDEA中集成Maven:

IDEA中默认Maven

IDEA自定义Maven

配置settings.xml

在settings.xml中,分别配置三个信息:

  • 本地仓库
  • 镜像仓库
  • JDK

本地仓库配置

1
2
3
4
5
6
7
8
9
10
11
12
13
<!--
# 本地仓库是开发者本地电脑中的一个目录,用于缓存从远程仓库下载的构件。
# 默认的本地仓库是 ${user.home}/.m2/repository
# 用户可使用settings.xml文件修改本地仓库。具体内容如下:
-->
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 本地仓库配置 -->
<localRepository>具体本地仓库位置</localRepository>
<!-- 省略,具体信息参考后续内容。 -->
</settings>

镜像仓库配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!--
# 如果仓库A可以提供仓库B存储的所有内容,那么就可以认为A是B的一个镜像。
# 例如:在国内直接连接中央仓库下载依赖,由于一些特殊原因下载速度非常慢。
# 我们可以使用阿里云提供的镜像 http://maven.aliyun.com/nexus/content/groups/public/
# 来替换中央仓库 http://repol.maven.org/maven2/ ,具体内容如下:
-->
<mirror>
<!-- 指定镜像ID(可自己改名) -->
<id>nexus-aliyun</id>
<!-- 匹配中央仓库(阿里云的仓库名称,不可以自己起名,必须这么写)-->
<mirrorOf>central</mirrorOf>
<!-- 指定镜像名称(可自己改名) -->
<name>Nexus aliyun</name>
<!-- 指定镜像路径(镜像地址) -->
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

JDK配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!--
# 当你的idea中有多个jdk的时候,就需要指定你编译和运行的jdk
# 配置的前提是你的idea中要有1.8的jdk
-->
<profile>
<!-- settings.xml中的id不能随便起的 -->
<!-- 告诉maven我们用jdk1.8 -->
<id>jdk-1.8</id>
<!-- 开启JDK的使用 -->
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<!-- 配置编译器信息 -->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>

仓库优先级问题

IDEA中创建Maven工程

Maven工程类型

  1. POM工程:POM工程是逻辑工程,用在父级工程或聚合工程中,用来做jar包的版本控制。
  2. JAR工程:将会打包成jar,用作jar包使用。即常见的本地工程 —> Java Project。
  3. WAR工程:将会打包成war,发布在服务器上的工程。

创建Maven工程

Maven项目结构

标准目录结构:

src/main/java
这个目录下储存java源代码

src/main/resources
储存主要的资源文件。比如xml配置文件和properties文件

src/test/java
储存测试用的类,比如JUNIT的测试一般就放在这个目录下面
因为测试类本身实际是不属于项目的,所以放在任何一个包下都显得很尴尬,所以maven专门创建了一个测试包,用于存放测试的类

src/test/resources
可以自己创建你储存测试环境用的资源文件

src
包含了项目所有的源代码和资源文件,以及其他项目相关的文件。

target
编译后内容放置的文件夹

pom.xml
是Maven的基础配置文件。配置项目和项目之间关系,包括配置依赖关系等等

结构图:

1
2
3
4
5
6
7
8
9
10
--MavenDemo 项目名
--.idea 项目的配置,自动生成的,无需关注。
--src
-- main 实际开发内容
--java 写包和java代码,此文件默认只编译.java文件
--resource 所有配置文件。最终编译把配置文件放入到classpath中。
-- test 测试时使用,自己写测试类或junit工具等
--java 储存测试用的类
pom.xml 整个maven项目所有配置内容。
# 注意:目录名字不可以随便改,因为maven进行编译或者jar包生成操作的时候,是根据这个目录结构来找的,你若轻易动,那么就找不到了。

POM模式—Maven工程关系

Maven工具基于POM(Project Object Model,项目对象模型)模式实现的。在Maven中每个项目都相当于是一个对象,对象(项目)和对象(项目)之间是有关系的。关系包含了:依赖、继承、聚合,实现Maven项目可以更加方便的实现导jar包、拆分项目等效果。

依赖
1
了解
继承
1
了解
聚合
1
了解

常见插件

编译器插件

pom.xml 配置片段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!-- 配置maven的编译插件 --> 
<build>
<plugins>
<!--JDK编译插件 -->
<plugin>
<!--插件坐标 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6</version>
<!-- -->
<configuration>
<!-- 源代码使用JDK版本-->
<source>1.8</source>
<!-- 源代码编译为class文件的版本,要保持跟上面版本一致-->
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
资源拷贝插件

Maven在打包时默认只将src/main/resources里的配置文件拷贝到项目中并做打包处理,而非resource目录下的配置文件在打包时不会添加到项目中。

我们的配置文件,一般都放在:src/main/resources
然后打包后配置文件就会在target的classes下面放着:

测试:

1

Tomcat插件
1

Maven常见命令

Maven的命令非常多,常用的几个:(所有命令都可以在IDEA控制台运行)

install==》本地安装, 包含编译,打包,安装到本地仓库

  • 编译 - javac
  • 打包 - jar, 将java代码打包为jar文件
  • 安装到本地仓库 - 将打包的jar文件,保存到本地仓库目录中。

clean==》清除已编译信息,删除工程中的target目录。

compile==》只编译, javac命令。

package==》打包,包含编译,打包两个功能。

install和package的区别:

  • install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库

  • package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库



----------- 本文结束 -----------




Buy me a coffee.