我是靠谱客的博主 大气小天鹅,最近开发中收集的这篇文章主要介绍MAVEN学习使用MAVEN安装配置定义作用MAVEN标准目录结构MAVEN仓库依赖坐标解释和添加依赖依赖传递依赖冲突聚合依赖继承和管理插件继承maven常用命令MAVEN远程仓库认证Maven远程仓库配置,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

MAVEN学习

  • MAVEN安装配置
  • 定义
  • 作用
  • MAVEN标准目录结构
  • MAVEN仓库
  • 依赖坐标解释和添加依赖
  • 依赖传递
  • 依赖冲突
    • 依赖的原则
    • 依赖统一版本管理解决依赖冲突
    • 依赖传递
    • 依赖排除
  • 聚合
  • 依赖继承和管理
  • 插件继承
  • maven常用命令
  • MAVEN远程仓库认证
  • Maven远程仓库配置

MAVEN安装配置

  • 下载地址:http://maven.apache.org
  • 环境变量配置: 下载解压后,配置到环境变量中,声明到bin目录中
    在这里插入图片描述
    在这里插入图片描述

定义

Apache Maven是一个项目管理工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目依赖配置和用maven工具操作项目。

作用

  • maven工具:
    包括清理,编译,测试,报告,打包,部署···等步骤
  • maven方式管理jar包依赖好处:
    解决jar包冲突
    解决jar包依赖问题
    jar包不用再每个项目保存,只需要放在仓库即可
    maven可以指定jar包的依赖范围

MAVEN标准目录结构

project
	src
		main	项目主代码和资源
			java	项目的Java源代码
			resources	项目的资源文件
			webapp	web项目资源文件(可无)
		test	单元测试代码和资源
			java	测试的Java源代码
			resources	测试的资源文件(可无)
	target		打包输出目录(可无)
		classes	编译输出目录
		test-classes	测试编译输出目录		
	pom.xml	 maven依赖管理配置文件

MAVEN仓库

Maven管理资源的位置。仓库里面包含依赖(jar包)和插件(plug-in)。Maven仓库分为本地仓库和远程仓库,而远程仓库又包括私服和中央仓库。

依赖坐标解释和添加依赖

在Maven中,坐标是jar包的唯一标识,Maven通过坐标在仓库中找到项目所需的jar包。

        <dependency>
				<groupId>org.elasticsearch</groupId>
				<artifactId>elasticsearch</artifactId>
				<version>7.5.1</version>
        </dependency>

groupId:公司或组织域名倒序
artifactId:模块名
version:版本号
packaging:项目的打包方式(pom/jar/war,默认jar)

  • Maven依赖项版本查询网站:
    http://mvnrepository.com/
  • 项目添加依赖:将我们所需要的jar包坐标放入dependencies标签中,配置到项目pom文件中就可以了
    在这里插入图片描述

依赖传递

如果我们的项目引用了一个Jar包,而该Jar包又引用了其他Jar包,那么在默认情况下项目编译时,Maven会把直接引用和简洁引用的Jar包都下载到本地

依赖冲突

依赖冲突指的是一个工程模块引用了不同版本的同一种jar包。

依赖的原则

  • 路径最短者优先
    例如:当我们工程Animal依赖Cat,Cat又依赖Action,而Action依赖log4j-1.2.17,Cat依赖log4j-1.2.14,如果工程中既引用了Cat,那我们的工程要依赖于哪个版本呢?其实Maven为我们提供了内置的原则,就是路径最短者优先,我们的Animal工程最终依赖的是log4j-1.2.14
    在这里插入图片描述
  • 先声明先优先
    例如:当我们工程Animal同时依赖Cat,又依赖Action,每个单独工程中Action依赖log4j-1.2.17,Cat依赖log4j-1.2.14,这时候依赖的路径是相同的,那我们的Animal工程最终依赖的是哪个版本呢?
    这个时候我们要看这两个jar文件在pom文件声明的先后顺序,优先声明者先依赖。

依赖统一版本管理解决依赖冲突

在这里插入图片描述

在<properties></properties>中定义版本号标签,在依赖配置时,
在<version></version>中用${}引入版本号标签

依赖传递

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.1.6.RELEASE</version>
    <!-- 不可以向下传递依赖 -->
    <optional>true</optional>
</dependency>

在导入一个依赖的时候,是否需要把这个依赖向下传递
false:可以向下传递(默认值)
true:不可以向下传递

依赖排除

<!-- swagger2-->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>${swagger.version}</version>
		<!-- 排除不需要的依赖->
			<exclusions>
			    <exclusion>
			        <groupId>io.swagger</groupId>
			        <artifactId>swagger-annotations</artifactId>
			    </exclusion>
			    <exclusion>
			        <groupId>io.swagger</groupId>
			        <artifactId>swagger-models</artifactId>
			    </exclusion>
			</exclusions>
		</dependency>

聚合

将多个项目同时运行就称为聚合。聚合的作用,是为了简化构建项目的过程。一次性构建多个项目!

   <modules>
	    <module>ruoyi-admin</module>
		<module>ruoyi-framework</module>
		<module>ruoyi-system</module>
		<module>ruoyi-quartz</module>
		<module>ruoyi-generator</module>
        <module>ruoyi-common</module>
        <module>rouyi_btdzy</module>
    </modules>

依赖继承和管理

  • 继承
    在聚合多个项目时,如果这些被聚合的项目中需要引入相同的Jar,那么可以将这些Jar写入父pom中,各个子项目可以选择继承该pom或者选择需要的依赖继承。
    作用:
    1.为了简化pom.xml配置,简化groupId,artifactId, version ,还可以锁定子工程依赖版本。
    2.dependencyManagement只会影响现有依赖的配置,但不会引入依赖。子模块可以选择自己所需要的模块

  • 父pom配置:将需要继承的Jar包的坐标放入dependencyManagement标签即可

      <dependencyManagement>
          <dependencies>
             <!-- pagehelper 分页插件 -->
      	      <dependency>
      			<groupId>com.github.pagehelper</groupId>
      			<artifactId>pagehelper-spring-boot-starter</artifactId>
      			<version>${pagehelper.boot.version}</version>
            </dependency>
          </dependencies>
      </dependencyManagement>
    
  • 子pom继承父工程所有依赖配置:

      <parent>
          <groupId>父pom所在项目的groupId</groupId>
          <artifactId>父pom所在项目的artifactId</artifactId>
          <version>父pom所在项目的版本号</version>
      </parent>
    
  • 子pom选择依赖继承配置:

     <dependencies>
          <dependency>
                <groupId>com.github.pagehelper</groupId>
      		   <artifactId>pagehelper-spring-boot-starter</artifactId>
          </dependency>
      </dependencies>
    

插件继承

我们可以使用pluginManagement元素管理插件。一个常见的用法就是我们希望项目所有模块的使用compiler插件的时候,都是用jdk1.8,以及指定Java源文件编码为UTF-8,这时可以在父模块的POM中如下配置pluginManagement:

<build>
    <pluginManagement>
        <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>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

这段配置会被应用到所有子模块的compiler插件中,因为Maven内置了compiler插件与生命周期的绑定,因此子模块不需要任何maven-compiler-plugin的配置了。

maven常用命令

在这里插入图片描述

  • 在项目中引入对应的插件就可以执行对应的命令

MAVEN远程仓库认证

在配置好的maven目录下settings.xml文件中配置认证


releases
admin
admin123


snapshots
admin
admin123

Maven远程仓库配置

<repositories>
		<!--阿里云镜像仓库-->
		<repository>
			<!--仓库id,和私服的server id一样-->
			<id>public</id>
			<!--仓库名称-->
			<name>aliyun nexus</name>
			<!--仓库地址-->
			<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
			<!--线上版本(生产环境使用的)-->
			<releases>
				<enabled>true</enabled>
			</releases>
		</repository>
		<!--oracle驱动没有发布到中央仓库,只能从此仓库下载-->
		<repository>
			<id>jeecg</id>
			<name>jeecg Repository</name>
			<url>http://maven.jeewx.com/nexus/content/repositories/jeecg</url>
			<!--snapshots:快照版本(开发过程中使用的)-->
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>
	</repositories>

repositories标签表示多个仓库,repository标签表示单个仓库配置

最后

以上就是大气小天鹅为你收集整理的MAVEN学习使用MAVEN安装配置定义作用MAVEN标准目录结构MAVEN仓库依赖坐标解释和添加依赖依赖传递依赖冲突聚合依赖继承和管理插件继承maven常用命令MAVEN远程仓库认证Maven远程仓库配置的全部内容,希望文章能够帮你解决MAVEN学习使用MAVEN安装配置定义作用MAVEN标准目录结构MAVEN仓库依赖坐标解释和添加依赖依赖传递依赖冲突聚合依赖继承和管理插件继承maven常用命令MAVEN远程仓库认证Maven远程仓库配置所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部