50.Maven

Maven

创建一个空项目

maven概述

​ 自动化的项目构建工具。

​ make->ant->maven->gradle…

为什么要使用maven?

​ 1、可以很方便的实现分布式项目构建。

​ 2、强大依赖管理能力。

maven的安装和配置

​ 解压即可用,需要配置环境变量。

​ 1、解压到一个无中文无空格的目录中即可。

​ 2、配置环境变量。

​ 3、在命令行窗口执行 mvn -v

maven核心概念

maven项目的目录结构

​ 约定大于配置。

image-20210928162429434

常用的maven命令:

mvn clean:做清理工作,清理上一次编译结果。

mvn compile:做编译工作,编译main目录下的java源文件。

mvn test-compile:做编译工作,编译test目录下的java源文件。先编译main目录,再编译test目录。

mvn package:做打包工作,基于pom.xml中的标签配置的值,将项目打成对应的包。

mvn install:做安装工作,将当前项目安装到maven的本地仓库。

mvn deploy:做部署工作,将构建好的项目部署到对应的服务器中

maven的仓库

​ maven项目拉取的外部依赖,永远只到本地仓库中去查找。如果本地仓库中有对应的资源,引用该资源,如果没有对应的资源,maven会向中央仓库发起请求,从中央仓库中将对应的资源下载到本地仓库中,然后maven项目再从本地仓库中引用该资源。

本地仓库

​ 默认本地仓库在c盘,一般会修改其本地仓库位置。

​ 在mavne安装目录下的conf目录下的settings.xml中,将标签中的localRepository配置成本地仓库路径即可。

<localRepository>E:/maven/repository</localRepository>
远程仓库

​ 中央仓库:

​ 中央仓库镜像

​ 私服

​ 修改中央仓库镜像,用于改善资源下载速度。

<mirrors>
      <mirror>
      <id>aliyun-public</id>
      <mirrorOf>*</mirrorOf>
      <name>aliyun public</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>

    <mirror>
      <id>aliyun-central</id>
      <mirrorOf>*</mirrorOf>
      <name>aliyun central</name>
      <url>https://maven.aliyun.com/repository/central</url>
    </mirror>

    <mirror>
      <id>aliyun-spring</id>
      <mirrorOf>*</mirrorOf>
      <name>aliyun spring</name>
      <url>https://maven.aliyun.com/repository/spring</url>
    </mirror>

    <mirror>
      <id>aliyun-spring-plugin</id>
      <mirrorOf>*</mirrorOf>
      <name>aliyun spring-plugin</name>
      <url>https://maven.aliyun.com/repository/spring-plugin</url>
    </mirror>

    <mirror>
      <id>aliyun-apache-snapshots</id>
      <mirrorOf>*</mirrorOf>
      <name>aliyun apache-snapshots</name>
      <url>https://maven.aliyun.com/repository/apache-snapshots</url>
    </mirror>

    <mirror>
      <id>aliyun-google</id>
      <mirrorOf>*</mirrorOf>
      <name>aliyun google</name>
      <url>https://maven.aliyun.com/repository/google</url>
    </mirror>

    <mirror>
      <id>aliyun-gradle-plugin</id>
      <mirrorOf>*</mirrorOf>
      <name>aliyun gradle-plugin</name>
      <url>https://maven.aliyun.com/repository/gradle-plugin</url>
    </mirror>

    <mirror>
      <id>aliyun-jcenter</id>
      <mirrorOf>*</mirrorOf>
      <name>aliyun jcenter</name>
      <url>https://maven.aliyun.com/repository/jcenter</url>
    </mirror>

    <mirror>
      <id>aliyun-releases</id>
      <mirrorOf>*</mirrorOf>
      <name>aliyun releases</name>
      <url>https://maven.aliyun.com/repository/releases</url>
    </mirror>

    <mirror>
      <id>aliyun-snapshots</id>
      <mirrorOf>*</mirrorOf>
      <name>aliyun snapshots</name>
      <url>https://maven.aliyun.com/repository/snapshots</url>
    </mirror>

    <mirror>
      <id>aliyun-grails-core</id>
      <mirrorOf>*</mirrorOf>
      <name>aliyun grails-core</name>
      <url>https://maven.aliyun.com/repository/grails-core</url>
    </mirror>

    <mirror>
      <id>aliyun-mapr-public</id>
      <mirrorOf>*</mirrorOf>
      <name>aliyun mapr-public</name>
      <url>https://maven.aliyun.com/repository/mapr-public</url>
    </mirror>
  </mirrors>
maven的生命周期

​ 不论执行生命周期的哪一个阶段(命令),都会从当前生命周期的最初位置开始执行。

clean lifycle:清理的生命周期,用于清理前一次的编译结果

default lifycle:核心生命周期,包含了编译、测试、打包、安装、部署等等命令。

site lifycle:生成站点。

mvn site

idea中maven的配置:

file->settings->build…->build tools->maven

maven home derictory:指向maven的安装目录

user settings files:指向maven安装目录中conf/settings.xml

maven的pom.xml

maven的坐标

​ 坐标:用于定位,定位一个安装在仓库中的项目jar包的位置。生成的jar包的名称是以artifacId+"-"+version.jar命名。

:公司或组织的域名的倒写

:项目名称

:版本

<groupId>com.woniuxy</groupId>
<artifactId>20210928</artifactId>
<version>1.0-SNAPSHOT</version>
maven的依赖

​ 项目中如果要导入外部依赖(jar包),需要通过来实现。

​ maven官方提供了一个网址:mvnrepository.com,在本地仓库中没有对应的maven依赖时,可到该网站查询。

	<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
            <!--
            scope用于指定依赖的作用范围:compile(默认值)
            compile:指定当前依赖参与了编译、打包、部署等
            test:指定当前依赖只参与测试阶段  junit.jar
            provided:指定当前依赖只参与编译阶段,不参与打包、部署   servlet-api.jar
            -->
            <scope>compile</scope>
        </dependency>
    </dependencies>

​ scope:用于指定依赖的作用范围。

maven依赖的传递

​ 只有在依赖的作用范围为compile时,该依赖才具备传递性,取值不为compile时,该依赖不具备传递性。

maven依赖的排除

​ 标签用于排除其他项目传递过来的依赖,主要目的是避免jar包冲突。

		<dependency>
            <groupId>com.woniuxy</groupId>
            <artifactId>20210928</artifactId>
            <version>1.0-SNAPSHOT</version>
            <!-- exclusions用于排除其他项目传递过来的依赖。 -->
            <exclusions>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
maven依赖的原则

​ 1、路径最短者优先

​ 2、路径相同时,先配置者优先

maven的继承

maven项目的分类:

通过的值来进行分类的。该标签取值有以下三个:

jar 普通java项目

war web项目

pom 父项目

继承的第一步:先创建父项目,在pom.xml中使用标签将项目的打包形式指定为pom,建议直接删除src目录。

继承的第二步:在子项目中,使用标签将父项目的坐标引入进来即可。

maven的聚合

​ maven项目的聚合在建立在继承的基础上。

聚合的第一步:在父项目的pom.xml中,使用来将子项目包含进来。

	<modules>
        <module>../B</module>
    </modules>

聚合的第二步:在子项目的标签中使用指向父项目的pom.xml

<relativePath>../A/pom.xml</relativePath>
父项目集中管理依赖版本

父项目的操作:

1、在父项目的pom.xml中,使用标签统一管理依赖的版本

	<properties>
        <mybatis.version>3.5.6</mybatis.version>
    </properties>

2、使用标签声明要引入到项目中的依赖,在标签中使用表达式将中的子标签的值取过来即可。

	<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

子项目的操作:

使用标签按需加载对应的依赖,无需配置标签。

	<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
        </dependency>
    </dependencies>

on>





子项目的操作:

使用<dependencies>标签按需加载对应的依赖,无需配置<version>标签。

```xml
	<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
        </dependency>
    </dependencies>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当出现"Cannot resolve plugin org.apache.maven.plugins:maven-site-plugin:3.3"的错误提示时,一般是因为无法下载到Maven***你可以前往Maven官网下载Maven并安装,然后修改settings.xml文件,将镜像源改为阿里镜像。这样可以提高下载包的速度和稳定性。 另外,你也可以尝试删除"maven-site-plugin:3.3"这个文件夹,并重新刷新Maven。有时候删除该文件夹后重新下载可能会解决问题。如果删除后还是无法下载,你可以尝试降低版本号,例如使用"maven-site-plugin:3.1"。 综上所述,你可以通过改变Maven的镜像源或删除特定的文件夹来解决"Cannot resolve plugin org.apache.maven.plugins:maven-site-plugin:3.3"的问题。希望这些方法能够帮助到你。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Cannot resolve plugin org.apache.maven.plugins:maven-site-plugin:3.3](https://blog.csdn.net/weixin_46022179/article/details/125836849)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [IDEA创建项目出现Cannot resolve plugin org.apache.maven.plugins:maven-clean-plugin:2.5](https://blog.csdn.net/weixin_45429409/article/details/118068484)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值