Maven的配置(详细)

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

Author:折木

Version:9.0.2

文章目录

一、引言


1.1 项目管理问题

项目中jar包资源越来越多,jar包的管理越来越沉重。

1.1.1 繁琐

要为每个项目手动导入所需的jar,需要搜集全部jar

1.1.2 复杂

项目中的jar如果需要版本升级,就需要再重新搜集jar

1.1.3 冗余

相同的jar在不同的项目中保存了多份

1.2 项目管理方案

java项目需要一个统一的便捷的管理工具:Maven

二、介绍


Maven这个单词来自于意第绪语(犹太语),意为知识的积累.

Maven是一个基于项目对象模型(POM)的概念的纯java开发的开源的项目管理工具。主要用来管理java项目,进行依赖管理(jar包依赖管理)和项目构建(项目编译、打包、测试、部署)。此外还能分模块开发,提高开发效率。

三、Maven安装


3.1 下载Maven

下载Maven

http://us.mirrors.quenda.co/apache/maven/maven-3/3.5.4/binaries/

在这里插入图片描述

3.2 Maven安装
3.2.1 解压

注意: 解压文件尽量不要放在含有中文或者特殊字符的目录下。

解压后,有如下目录:

`bin:含有mvn运行的脚本`
`boot:含有plexus-classworlds类加载器框架,Maven 使用该框架加载自己的类库。`
`conf:含有settings.xml配置文件`
`lib:含有Maven运行时所需要的java类库`
3.2.2 环境变量

maven依赖java环境,所以要确保java环境已配置好 (maven-3.3+ 需要jdk7+)

maven本身有2个环境变量要配置:

`MAVEN_HOME = maven的安装目录`
`PATH = maven的安装目录下的bin目录`
3.2.3 测试

查看maven版本信息

mvn -v

四、Maven配置


4.1 本地仓库

maven的conf目录中有 settings.xml ,是maven的配置文件,做如下配置:

<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
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
  <!-- 选择一个磁盘目录,作为本地仓库 -->
  <localRepository>D:Program Filesmavenmyrepository</localRepository>
4.2 JDK配置

在 标签中 增加 一个 标签,限定maven项目默认的jdk版本.

内容如下:

<profiles>
    <!-- 在已有的profiles标签中添加profile标签 -->
	<profile>    
        <id>myjdk</id>    
        <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>
</profiles>
<!-- 让增加的 profile生效 -->
<activeProfiles>
    <activeProfile>myjdk</activeProfile>
</activeProfiles>

五、仓库


5.1 概念
  • 存储依赖的地方,体现形式就是本地的一个目录。

  • 仓库中不仅存放依赖,而且管理着每个依赖的唯一标识(坐标),Java项目凭坐标获取依赖。

5.2 仓库分类

仓库分类如下:

仓库分类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gRFqJv27-1607934856551)(Pictures/仓库分类.jpg)]

当需要依赖时,会从仓库中取查找,优先顺序为:

本地仓库 > 私服(如果配置了的话) > 公共仓库(如果配置了的话) > 中央仓库

5.3 本地仓库

即在settings.xml 中配置的目录。

使用过了的依赖都会自动存储在本地仓库中,后续可以复用。

5.4 远程仓库
5.4.1 中央仓库
  • Maven 中央仓库是由 Maven 社区提供的仓库,不用任何配置,maven中内置了中央仓库的地址。

    其中包含了绝大多数流行的开源Java构件。

  • https://mvnrepository.com/ 可以搜索需要的依赖的相关信息(仓库搜索服务)

    http://repo.maven.apache.org/maven2/ 中央仓库地址

5.4.2 公共仓库【重点
  • 除中央仓库之外,还有其他远程仓库。
    比如aliyun仓库(http://maven.aliyun.com/nexus/content/groups/public/)

  • 中央仓库在国外,下载依赖速度过慢,所以都会配置一个国内的公共仓库替代中央仓库。

<!--setting.xml中添加如下配置-->
<mirrors>
	<mirror>
        <id>aliyun</id>  
        <!-- 中心仓库的 mirror(镜像) -->
        <mirrorOf>central</mirrorOf>    
        <name>Nexus aliyun</name>
        <!-- aliyun仓库地址 以后所有要指向中心仓库的请求,都会指向aliyun仓库-->
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
    </mirror>
</mirrors>
5.4.3 私服【了解】

公司范围内共享的仓库,不对外开放。

可以通过 Nexus来创建、管理一个私服。

六、Idea-Maven


6.1 在Idea中关联Maven

在idea中关联本地安装的maven,后续就可以通过idea使用maven,管理项目啦。

在全局设置中,关联Maven

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-znGuJ5Rp-1607934856552)(Pictures/idea关联maven.jpg)]

6.2 创建Maven项目
6.2.1 新建项目

新建项目,要选择 Maven 选项

如下选项

在这里插入图片描述

6.2.2 指定项目名

设置项目名

在这里插入图片描述

6.2.3 项目位置

项目位置如下

在这里插入图片描述

6.2.4 项目结构
  • src/main/java 存放源代码,建包,放项目中代码(service,dao,User,…)

  • src/main/resources 书写配置文件,项目中的配置文件(jdbc.properties)

  • src/test/java 书写测试代码,项目中测试案例代码

  • src/test/resources 书写测试案例相关配置文件

  • 目根/pom.xml (project object model) maven项目核心文件,其中定义项目构建方式,声明依赖等

  • 注意:项目中的建包,建类,执行,都和普通项目无差异

项目结构如下:

在这里插入图片描述

6.2.5 项目类型

根据项目类型,在pom.xml中做出对应配置,添加配置:war/jar

<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>com.qf</groupId>
    <artifactId>test01</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- 打包方式,如果是java项目则用 jar,
         如果是web项目则用war -->
    <!--<packaging>war</packaging>-->
    <packaging>jar</packaging>
</project>
6.3 导入依赖jar

建好项目后,需要导入需要的jar,要通过坐标

  • 每个构件都有自己的坐标 = groupId + artifactId + version = 项目标识 + 项目名 + 版本号

  • 在maven项目中只需要配置坐标,maven便会自动加载对应依赖。删除坐标则会移除依赖

6.3.1 查找依赖

依赖查找服务:https://mvnrepository.com/ ,获得依赖的坐标,在maven项目中导入。

查找依赖坐标

在这里插入图片描述

在这里插入图片描述

6.3.2 导入依赖

在项目的pom文件中,增加依赖

在项目的pom.xml文件添加依赖

在这里插入图片描述

6.3.3 同步依赖

引入坐标后,同步依赖,确认导入。

窗口右下角弹窗,刷新依赖,使新加的配置被maven加载

在这里插入图片描述

####6.4 创建web项目

6.4.1 打包方式

pom.xml中设置 war

web项目打包方式为:war

在这里插入图片描述

6.4.2 web依赖

导入 JSP 和 Servlet 和 JSTL依赖,使项目具有web编译环境

<?xml version="1.0" encoding="UTF-8"?>
<project ...>
    ...
    <packaging>war</packaging>

	<!-- 导入JSP 和 Servlet 和 JSTL 依赖 -->
    <dependencies>
        <dependency>
            <!-- jstl 支持 -->
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <!-- servlet编译环境 -->
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <!-- jsp编译环境 -->
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>
6.4.3 webapp目录

按照maven规范,新建web项目特有目录

新建如下目录和文件

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
	<!-- 这是一个空白的web.xml文件模板 -->
</web-app>
6.4.4 定义Servlet和Jsp

照常定义即可

在这里插入图片描述

6.5 部署web项目
6.5.1 新增Tomcat

新增Tomcat

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6.5.2 部署web项目

部署web项目

在这里插入图片描述

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

6.5.3 启动Tomcat

启动Tomcat

在这里插入图片描述

在这里插入图片描述

6.6 依赖生命周期
6.6.1 概念

Jar包生效的时间段,即Jar的生命周期

6.6.2 使用方式

项目中导入的依赖可以做生命周期的管理

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
    <!-- 生命周期 -->
    <scope>compile</scope>
</dependency>
<dependency>
    <!-- servlet编译环境 -->
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <!-- 生命周期 -->
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <!-- 生命周期 -->
    <scope>test</scope>
</dependency>
6.6.3 生命周期详解

标识

周期

compile

缺省值,适用于所有阶段(测试运行,编译,运行,打包)

provided

类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet-api.jar;适用于(测试运行,编译)阶段

runtime

只在运行时使用,如 mysql的驱动jar,适用于(运行,测试运行)阶段

test

只在测试时使用,适用于(编译,测试运行)阶段,如 junit.jar

system

Maven不会在仓库中查找对应依赖,在本地磁盘目录中查找;适用于(编译,测试运行,运行)阶段

七、Maven指令


7.1 命令行

通过Idea打开 cmd,然后执行Maven指令

打开 cmd,并定位到项目目录

在这里插入图片描述

执行maven指令

在这里插入图片描述

7.2 Maven面板

Idea中有Maven面板,其中可以快速执行Maven指令

maven面板

在这里插入图片描述

八、私服


8.1 概念
  • 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。

  • 有了私服之后,当 Maven 需要下载依赖时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。

  • 私服可以解决在企业做开发时每次需要的jar包都要在中心仓库下载,且每次下载完只能被自己使用,不能被其他开发人员使用

  • 所谓私服就是一个服务器,但是不是本地层面的,是公司层面的,公司中所有的开发人员都在使用同一个私服

8.2 架构

无私服

有私服

在这里插入图片描述

在这里插入图片描述

我们可以使用专门的 Maven 仓库管理软件来搭建私服,比如:Apache ArchivaArtifactorySonatype Nexus。这里我们使用 Sonatype Nexus

8.3 Nexus安装【了解】
8.3.1 下载
8.3.2 安装

下载nexus-2.x-bundle.zip,解压即可

nexus安装目录

在这里插入图片描述

8.4 启动【了解】
  • 解压后在bin目录中执行:
    • nexus install 在系统中安装nexus服务
    • nexus uninstall 卸载nexus服务
    • nexus start 启动服务
    • nexus stop 停止服务
8.5 Nexus登录【了解】

访问私服:http://localhost:8081/nexus/

登录Nexus才可以使用Nexus管理功能

在这里插入图片描述

在这里插入图片描述
|

8.6 仓库列表【了解】

仓库类型

描述

group

包含多个仓库,通过group库的地址可以从包含的多个仓库中查找构件

hosted

私服 服务器本地的仓库,其中存储诸多构件

proxy

代理仓库,其会关联一个远程仓库, 比如中央仓库,aliyun仓库,向该仓库查找构件时,如果没有会从其关联的仓库中下载

仓库名

描述

Releases

存放项目的稳定发布版本,一个模块做完后如果需要共享给他人,可以上传到私服的该库

Snapshots

对应不稳定的发布版本

3rd party

存放中央仓库没有的 ,如ojdbc.jar,可以上传到私服的该库中

仓库列表

私服list

8.7 Maven配置私服 【重点

在maven中配置私服,使得maven可以从私服上获取构件

8.7.1 仓库组

而此时就有问题,私服中有很多仓库,每个仓库都有自己的url,则项目中配置哪个仓库呢

私服中有一个仓库组,组中包含多个仓库,可以指定仓库组的url,即可从多个仓库中获取构件

仓库组 注意:proxy的仓库排序在最后

在这里插入图片描述

8.7.2 Maven关联私服

配置settings.xml,设置私服地址、认证等信息

<servers>
	<server> 
		<id>nexus-public</id> <!-- nexus的认证id -->
		<username>admin</username> <!--nexus中的用户名密码-->
		<password>admin123</password> 
	</server>
</servers>
<profiles>
	<profile> 
        <id>nexus</id> 
        <repositories> 
            <repository> 
                <id>nexus-public</id> <!--nexus认证id 【此处的repository的id要和 <server>的id保持一致】-->
                <!--name随便-->
                <name>Nexus Release Snapshot Repository</name> 
                <!--地址是nexus中仓库组对应的地址-->
                <url>http://localhost:8081/nexus/content/groups/public/</url>
                <releases><enabled>true</enabled></releases> 
                <snapshots><enabled>true</enabled></snapshots> 
            </repository>
        </repositories> 
        <pluginRepositories> <!--插件仓库地址,各节点的含义和上面是一样的-->
            <pluginRepository> 
                <id>nexus-public</id> <!--nexus认证id 【此处的repository的id要和 <server>的id保持一致】-->
                <!--地址是nexus中仓库组对应的地址-->
                <url>http://localhost:8081/nexus/content/groups/public/</url>
                <releases><enabled>true</enabled></releases> 
                <snapshots><enabled>true</enabled></snapshots> 
            </pluginRepository> 
        </pluginRepositories> 
    </profile>
</profiles>
<activeProfiles>
    <activeProfile>yourjdk</activeProfile>
    <!-- 使私服配置生效 -->
    <activeProfile>nexus</activeProfile>
</activeProfiles>

至此,Maven项目中需要依赖时,Maven会从私服中下载

8.8 Maven项目部署到私服
  • 执行 :mvn deploy 即可将项目部署到私服对应的仓库中,此时项目中的打包方式多为jar

  • 但需要提前在项目的pom.xml中配置部署私服仓库位置,如下:

    ...
	<dependencies>
		.....
	</dependencies>
	
	<!-- 在项目的pom.xml中 配置私服的仓库地址,可以将项目打jar包部署到私服 -->
	<distributionManagement>
        <repository>
            <id>nexus-public</id> <!-- nexus认证id -->
            <url>http://localhost:8081/nexus/content/repositories/releases</url>
        </repository>
        <snapshotRepository>
            <id>nexus-public</id> <!-- nexus认证id -->
            <url>http://localhost:8081/nexus/content/repositories/snapshots</url>
        </snapshotRepository>
	</distributionManagement>
</project>

注意:如上的 repository的 id 依然是要和settings.xml中配置的server中的id 一致,才能通过私服的认证
``xml

<!-- 在项目的pom.xml中 配置私服的仓库地址,可以将项目打jar包部署到私服 -->
<distributionManagement>
    <repository>
        <id>nexus-public</id> <!-- nexus认证id -->
        <url>http://localhost:8081/nexus/content/repositories/releases</url>
    </repository>
    <snapshotRepository>
        <id>nexus-public</id> <!-- nexus认证id -->
        <url>http://localhost:8081/nexus/content/repositories/snapshots</url>
    </snapshotRepository>
</distributionManagement>

```

注意:如上的 repository的 id 依然是要和settings.xml中配置的server中的id 一致,才能通过私服的认证

Maven是一个Java项目管理和自动化构建工具,它可以帮助我们更轻松地管理项目依赖、构建和发布等任务。在使用Maven之前,我们需要进行一些配置。下面是Maven配置详细步骤: 1. 下载Maven 首先,我们需要从官方网站(https://maven.apache.org/download.cgi)下载最新版本的Maven。下载完成后,我们需要解压缩到本地目录。 2. 配置环境变量 为了让系统能够识别Maven命令,我们需要将Maven的bin目录添加到系统环境变量中。具体步骤如下: - 打开系统环境变量设置界面。 - 在“系统变量”中,找到“Path”变量,点击“编辑”按钮。 - 在变量值中添加Maven的bin目录路径,多个路径之间用分号分隔。 例如: ``` C:\Program Files\apache-maven-3.8.1\bin; ``` 3. 配置Maven本地仓库 Maven会将下载的依赖包存储在本地仓库中,我们需要配置本地仓库的路径。具体步骤如下: - 打开Maven解压目录下的conf目录。 - 找到settings.xml文件,用文本编辑器打开。 - 在文件中找到“localRepository”标签,修改其值为本地仓库路径。如果没有该标签,可以在文件中添加。 例如: ``` <localRepository>/Users/YourName/.m2/repository</localRepository> ``` 4. 配置Maven镜像 Maven镜像是指从哪个仓库获取依赖包。为了加快依赖包下载速度,我们可以配置Maven镜像。具体步骤如下: - 打开settings.xml文件。 - 找到“mirrors”标签,如果没有则可以在文件中添加。 - 在“mirrors”标签中添加一个“mirror”标签,配置镜像地址和id。 例如: ``` <mirrors> <mirror> <id>aliyun</id> <name>aliyun Maven 镜像</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> ``` 5. 配置Maven代理 如果您的环境需要使用代理服务器才能访问外网,那么您需要配置Maven代理。具体步骤如下: - 打开settings.xml文件。 - 找到“proxies”标签,如果没有则可以在文件中添加。 - 在“proxies”标签中添加一个“proxy”标签,配置代理地址、端口号和协议类型。 例如: ``` <proxies> <proxy> <id>http_proxy</id> <active>true</active> <protocol>http</protocol> <host>proxy.example.com</host> <port>8080</port> </proxy> </proxies> ``` 6. 配置Maven默认编码 为了避免编码错误,我们需要配置Maven默认编码。具体步骤如下: - 打开settings.xml文件。 - 找到“profiles”标签,如果没有则可以在文件中添加。 - 在“profiles”标签中添加一个“profile”标签,配置默认编码类型。 例如: ``` <profiles> <profile> <id>default</id> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> </profile> </profiles> ``` 7. 配置Maven插件 Maven插件可以帮助我们更方便地管理项目。具体步骤如下: - 打开settings.xml文件。 - 找到“plugins”标签,如果没有则可以在文件中添加。 - 在“plugins”标签中添加一个“plugin”标签,配置插件信息。 例如: ``` <plugins> <plugin> <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> </configuration> </plugin> </plugins> ``` 以上就是Maven配置详细步骤。根据实际需求,您可以自由选择需要配置的部分。配置完成后,您就可以使用Maven来管理和构建您的Java项目了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值