首页 > 其他分享 >Maven

Maven

时间:2024-05-28 23:58:32浏览次数:22  
标签:maven 依赖 spring springframework Maven RELEASE org

1.Maven简介

        1.1 为什么要使用Maven?

                传统方式构建的web项目

                 

        特点:项目中使用jar包,需要重复的复制到项目的lib中


                maven方式创建的web项目

                

                相比之下占用空间要小得多

1.2 maven是什么?

        maven[ˈmevən]是Apache公司的开源项目,是一个项目构建工具,用来管理依赖。

        maven有两大核心功能:

                1.管理依赖:对jar包统一管理。

                 2.项目构建:项目再编码完成后,对项目进行编译、测试、打包、部署、等操作。

1.3.Maven的好处如何实现?

      1.3.1.仓库

                本地仓库 :用来存储从远程仓库或中央仓库下载的插件和 jar 包

                私服:如果本地需要插件或者 jar 包,本地仓库没有则去私服下载

                中央仓库 :中央仓库服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包 含了世界上大部分流行的开源项目构件。

        1.3.2坐标

                作用:用于定位jar包在仓库中的位置

                坐标:org.mybatis(公司) + mybatis(项目) + 3.4.5(版本信息)

<dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
</dependency>

2. Maven安装

        2.1 下载

        官网:http://maven.apache.org/ 

        2.2解压

        Maven 下载后将 Maven 解压到一个没有中文没有空格的路径下, 解压后目录结构如下:

        

        bin:脚本命令

        boot:引导程序,如类加载器等

        conf:配置文件,如 setting.xml 文件

        lib:maven 本身运行所需的一些 jar 包

        2.3配置环境变量

        安装前提:maven是由java语言开发,它的运行依赖于jdk

        安装步骤:

        1.配置MAVEN_HOME

        2.将MAVEN_HOME环境变量配置到path中

        3.测试

        找开 cmd 命令,输入 mvn –version命令,如下图

        

        2.4.配置阿里云镜像仓库

        直接从maven中央仓库下载速度非常慢,我们可以在settings配置文件中,配置阿里云镜像仓库:

<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

        2.5.配置本地仓库路径

        打开 settings.xml文件,配置如下:

  <!-- 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:\mvn_repository</localRepository>

        路径是自定义的

3.Idea集成Maven

        3.1.配置maven

打开:File | Settings | Build, Execution, Deployment | Build Tools | Maven

        3.2.设置idea自动导入依赖

        第一种方式:首次在pom文件中添加依赖时,IDEA右下角会弹框提示是否开启自动导入,点击开启即可。

        

        第二种方式:File | Settings | Build, Execution, Deployment | Build Tools | Maven | Importing

        注:idea新版本不需要导入,软件自动导入,可掠过这一步

4.创建maven工程

        4.1.创建工程

        1.选择maven

        老版本idea:

2.设置工程名

3.设置工程位置

新版本idea:

        

        4.2.maven工程目录结构

        目录结构如下图:

        

        说明:

|---src:源码

|--- |---main:存放主程序

|--- |--- |---java:java源码文件

|--- |--- |---resource:存放框架的配置文件

|--- |--- test:存放测试程序

|---pom.xml:maven的核心配置文件

4.3.添加依赖

  1. 查找坐标

    在浏览器打开https://mvnrepository.com/,查找junit的坐标(直接搜索框搜索)

  2. 在pom文件添加依赖

        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
        </dependencies>

添加测试类

import org.junit.Test;

public class DemoTest {
    @Test
    public void test(){
        System.out.println("hello,maven!");
    }
}

5.生命周期

        5.1.常用命令

                在pom.xml的同级目录下面,执行cmd命令

        5.1.1.clean   

                命令:mvn clean

                说明:将项目根目录下target目录清理掉

        5.1.2.compile

                命令:mvn compile

                说明:将项目中的.java文件编译为.class文件

        5.1.3 test

                 命令:mvn test

                说明:将项目根目录下target目录清理掉

        5.1.4.package

                命令:mvn package

                说明:将项目打包到target目录下

        5.1.5.install

                命令:mvn install

                说明:打包到本地仓库

        5.1.6.deploy

                命令:mvn deploy

                说明:部署到远程仓库

        注:这些命令在idea中又快捷方式,无须特意记忆

5.2.生命周期

        在maven中存在“三套”生命周期,每一套生命周期相互独立、互不影响,并且在一套生命周期内,执行后面的命令前面的命令都会自动执行:

        清理生命周期:

                clean

        默认生命周期:

                compile—test—package—install—deploy

        站点生命周期(生成网页,一般不用且需要插件):

                site

6.依赖管理

        6.1.依赖传递

        直接依赖:在当前项目中,通过依赖配置建立的依赖关系

        间接依赖:被依赖的资源,如果还依赖其他资源,那么当前项目间接依赖其他资源

        6.2.依赖冲突

        依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成类包版本冲突。

如下所示:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.1.8.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>5.2.0.RELEASE</version>
</dependency>

        通过查看依赖,我们发现spring-aop和spring-context都依赖了一个叫spring-core的依赖。此时spring-core的版本有两个,这样就产生了依赖冲突

        6.2.1.第一声明者优先原则

        谁先定义的就用谁的传递依赖:即调换spring-aop和spring-context位置

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>5.2.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.1.8.RELEASE</version>
</dependency>

        效果:

                        

        

        6.2.2.路径近者优先原则

        直接依赖级别高于传递依赖:即直接引入spring-beans

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.1.8.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>5.2.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.2.0.RELEASE</version>
</dependency>

        6.2.3.排除依赖

        排除依赖:在不影响项目运行的情况下把冲突的依赖排除掉

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.1.8.RELEASE</version>
    <exclusions>
        <exclusion>
            <artifactId>spring-core</artifactId>
            <groupId>org.springframework</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>5.2.0.RELEASE</version>
</dependency>

        

        *6.2.4.版本锁定(重点)

    <properties>
        <spring-core.version>5.2.0.RELEASE</spring-core.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring-core.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.8.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>5.2.0.RELEASE</version>
        </dependency>
    </dependencies>

        

        6.3.依赖范围

        6.3.1.什么是依赖范围?

        依赖的jar包在默认情况下可以在任何范围内使用,可以通过scope标签来控制其作用范围。作用范围如下:

        主程序(main方法)

        测试程序(junit)

        打包(package指令范围之内)

        例:把spring-context的作用域换成test

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.1.8.RELEASE</version>
    <scope>test</scope>
</dependency>

标签:maven,依赖,spring,springframework,Maven,RELEASE,org
From: https://blog.csdn.net/weixin_72945723/article/details/139276095

相关文章

  • Maven中各种scope的区别
    Maven中各种scope的区别compile,默认,参与编译,测试,运行,打包等过程,大部分依赖都是这个test,仅参与测试代码的编译,运行,如junitruntime,参与测试,运行,打包,不编译,如mysql-connnectorprovided,参与编译,测试,运行,不打包,如java.servlet-apisystem,参与编译,测试,运行,不打包,从本地系统读取,......
  • IDEA2023版本的Maven设置永久生效
    问题描述:每次创建一个新的项目Maven都会失效,都要重新配置。 解决方法:点击File—>NewProjectsSetup—>SettingsforNewProjects。 输入mvn,跟前面一样设置Mavenhomepath、Usersettingfile、Localrepository。完成后一定要重启!!!! ......
  • idea配置maven插件打包所有jar到lib
    在IntelliJIDEA中配置Maven插件以将所有依赖的JAR打包到一个lib文件夹中,通常不是通过直接配置IDEA来完成的,而是通过在Maven项目的pom.xml文件中添加相应的配置来实现的。下面是一个简单的步骤指南,说明如何在Maven项目中实现这一目标:添加Maven依赖插件:在你的......
  • 1915springboot VUE 宠物寄养平台系统开发mysql数据库web结构java编程计算机网页源码m
    一、源码特点 springbootVUE宠物寄养平台系统是一套完善的完整信息管理类型系统,结合springboot框架和VUE完成本系统,对理解JSPjava编程开发语言有帮助系统采用springboot框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。springbootVUE宠物寄养......
  • 手把手教你如何将自己的项目发布到Maven中央仓库
    看到别人写的工具类,有些自己想用的方法没有,想着看能不能自己封装一个库,然后丢上去,说干就干。网上有很多的教程,但是都是老版本的,maven中央仓库2024年3月份有更新迭代,本教程是最新版。一、Maven中央仓库账号1.注册登录地址:https://central.sonatype.com/有的话直接登录,没有......
  • 如何全程使用docker部署jeecg平台,无需安装开发环境(主要是如何使用Docker来进行Maven打
    在部署jeecg平台时,文档中即使通过docker部署,也需要安装开发环境编译一部分内容,本文记录使用docker替代安装环境的过程。使用docker的目的是在平台选型的过程中,不希望麻烦的安装环境,同时如果选型不满意,无需卸载环境就能恢复一个干净的系统。部署环境:UbuntuServer20.04docker,......
  • 一个maven打包Fatjar的配置(非遮蔽)
     <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>3.6.0</version><configur......
  • 将本地 JAR 包安装到本地 Maven 仓库
    首先,需要将本地的JAR包安装到你的本地Maven仓库中。可以使用mvninstall:install-file命令来完成这一步。1.打开终端或命令行2.运行以下命令,将JAR文件安装到本地Maven仓库:mvninstall:install-file-Dfile=path/to/your/local-jar-file.jar-DgroupId=com.example-......
  • Jenkins安装和新建maven项目
    Jenkins安装和新建maven项目官方文档:https://www.jenkins.io中午文档:https://www.jenkins.io/zh/doc/pipeline/tour/getting-started/安装需求机器要求:256MB内存,建议大于512MB10GB的硬盘空间(用于Jenkins和Docker镜像)需要安装以下软件:Java8(JRE或者JD......
  • ide创建maven项目时,选择哪个模板
    创建新的java项目时,选择maven框架比较节省时间,因为部分文件和目录都会给你建好,免得自己再费力创建。  我们常用的三个框架为:1、cocoon-22-archetype-webapp 【如果创建带有页面的项目,可以选择这个】目录结构: 2、maven-archetype-quickstart  【......