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标签表示单个仓库配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值