Maven简介

Maven高级(附带点初级)

maven的作用:

1.项目构建:提供标准的,跨平台的自动化项目构建方式

2.依赖管理:方便快捷的管理项目依赖的资源(jar),避免资源的版本冲突问题

3.统一开发构建:提供标准的,统一的项目结构

仓库:

1.仓库:用于存储资源,包含各自jar包

仓库分为:本地仓库,私服,中央仓库(本地仓库就在自己电脑上,私服一般是在公司的时候,通过局域网传输jar)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FgCEAK4R-1667628910830)(Maven简介.assets/image-20221102134908579.png)]

坐标

在这里插入图片描述

Maven项目构建命令

maven构建命令使用mvn开头,后面添加功能参数,可以一次性执行多个命名,使用空格分隔

mvn compile #编译

mvn clean #清理

mvn test #测试

mvn package #打包

mvn install #安装到本地仓库

pom.xml:

<!--指定pom的模型版本-->
<modelVersion>4.0.0</modelVersion>
<!--打包方式,web工程打包为war,java工程打包为jar-->
<packaging>war</packaging>
<!--组织id-->
<groupId>com.itheima</groupId>
<!--项目id-->
<artifactId>web01</artifactId>
<!--版本号:release,snapshot-->
<version>1,0-SNAPSHOT</version>

<!--设置当前工程的所有依赖-->
<dependency>
	<!--具体的依赖-->
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.12</version>
	</dependcy>
</dependcy>

<!--构建-->
<build>
	<!--设置插件-->
	<plugins>
		<!--具体的插件配置-->
		<plugin>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<!--设置端口号-->
			<configuration>
				<port>80</pory>
			</configuration>
		</plugin>
	</plugins>
</build>

依赖传递

依赖具有传递性

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

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

依赖传递冲突问题

在这里插入图片描述

可选依赖

可选依赖指对外隐藏当前所依赖的资源—不透明

//这依赖配置下面写上这个
<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.12</version>
	<optional>true</optional>
</dependency>

排除依赖

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本–不需要

<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.12</version>
	<optional>true</optional>
    <exclusons>//这里是排除依赖配置
        <exclusions>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
        </exclusions>
    </exclusons>
</dependency>

依赖范围

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OVxSTF6y-1667628910833)(Maven简介.assets/image-20221103124941817.png)]

项目构建生命周期

Maven对项目构建的生命周期划分为3套

​ clean:清理工作

​ default:核心工作,例如编译,测试,打包,部署等

​ site:产生报告,发布站点等

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OeIUPzMA-1667628910834)(Maven简介.assets/image-20221103132916892.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1tiQFp0g-1667628910835)(Maven简介.assets/image-20221103133007861.png)]

这里注意,只要执行那个阶段,它上面的阶段都会被执行,就比如一个人18岁了,看到18岁所经历的事情,但是18岁之前所有的事情都发生了,才会到18岁。所以要从一岁开始的事情到18岁的事情,都要走一遍。

在这里插入图片描述

插件就是在18岁之前没有经过的事情,我给它插入一个事情的片段,让它有了这个事情的经历。也即是指定执行的阶段,他上面的阶段里面,插入一个新的阶段。

Maven高级(重点来了,前面的大多数会操作就行,重点总结Maven高级)

1.分模块开发与设计(重点)

就是将原工程中的目录拆分成一个个单独的模块,来替代之前的目录。
在这里插入图片描述

ssm_pojo拆分

新建模块

拷贝原始项目中对应的相关内容到ssm_pojo模块中

​ 实体类(User)

​ 配置文件(无)

ssm_dao拆分

在这里插入图片描述

ssm_service拆分

在这里插入图片描述

ssm_control拆分

在这里插入图片描述

小节:

在这里插入图片描述

聚合(重点)

在这里插入图片描述

在web层war

在不是web层jar

在一次性构建多个项目层pom(也就是聚合的空模块里面是pom)

继承(重点)

模块依赖关系维护

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9orMeF9f-1667628910844)(Maven简介.assets/image-20221103190048585.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XrvIynen-1667628910844)(Maven简介.assets/image-20221103190101009.png)]

在这里插入图片描述

继承是用来解决各个模块版本问题,让各个模块的版本相同

继承与聚合的作用与异同点

在这里插入图片描述

属性

1.自定义属性

在这里插入图片描述

2.内置属性

在这里插入图片描述

3.Setting属性

在这里插入图片描述

4.Java系统属性

在这里插入图片描述

5.环境变量属性

在这里插入图片描述

工程版本

在这里插入图片描述

在这里插入图片描述

资源配置

先在pom文件属性中配置url的信息

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kEUJeRZN-1667628910851)(Maven简介.assets/image-20221104211155898.png)]

如果是测试类中配置文件需要加载pom文件中定义的属性,那么只需要把上面的换成

<testResources>
    <testResource>
        <directory></directory>
        <filtering></filtering>
    </testResource>
</testResources>
//preperties文件中这么写就可以得到pom文件中配置的url信息,前提是配置资源文件对应信息要写对:
url={jdbc.url}

多环境配置

在这里插入图片描述

加载指定环境

在这里插入图片描述

跳过测试(了解)

第一种

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S6AGPsVv-1667628910853)(Maven简介.assets/image-20221104213714747.png)]

第二种

在这里插入图片描述

第三种

在这里插入图片描述

私服

在这里插入图片描述

在这里插入图片描述

私服资源获取

在这里插入图片描述

idea环境中资源上传于下载

需要在setting.xml中配置访问私服的权限,也就是指定访问那个仓库,以及配置私服密码。

在这里插入图片描述

settings.xml配置文件(补充)

​ 当我们下载安装好Maven时,在其安装目录的conf下存在一个settings.xml的配置文件,这是一个全局的maven配置文件,为了不影响这台计算机上的其他用户,一般选择将该文件copy到 ~/.m2/下边,作为一个用户层面的配置文件。

settings.xml文件中主要包含以下的元素:

**localRepository:**本地仓库的目录。默认是用户目录下面的.m2/repository目录。

interactiveMode:表示是否使用交互模式,默认是true;如果设为false,那么当Maven需要用户进行输入的时候,它会使用一个默认值。

offline:表示是否离线,默认是false。这个属性表示在Maven进行项目编译和部署等操作时是否允许Maven进行联网来下载所需要的信息。

**mirrors:**定义一系列的远程仓库的镜像,用于缓解远程仓库的压力。

**profiles:**用于指定一系列的profile。

activeProfiles:指定当前正在活跃的profile。

**servers:**表示当需要连接到一个远程服务器的时候需要使用到的验证方式。

<?xml version="1.0" encoding="UTF-8"?>
<settings>
  <mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>  // 镜像id
      <mirrorOf>*</mirrorOf>   // 表示代理所有仓库
      <url>http://nexus.d.xxx.net/nexus/content/groups/public</url>  // 该镜像的地址
    </mirror>
  </mirrors>
  <profiles>
    <profile>
      <id>development</id>
      <repositories> // 构件的仓库
        <repository>
          <id>central</id>
          <url>http://nexus</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
     <pluginRepositories> // 插件的仓库
        <pluginRepository>
          <id>central</id>
          <url>http://nexus</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>development</activeProfile> // 对于所有的pom,上边定义的id=development的profile都是活跃状态的
  </activeProfiles>
 
  <servers>
    <server>
      <id>archiva.internal</id>  // release版本的用户名和密码
      <username>yangwenqiang</username>
      <password>pwdpwd</password>
    </server>
    <server>
      <id>archiva.snapshots</id> // snapshot版本的用户名和密码
      <username>yangwenqiang</username>
      <password>pwdpwd</password>
    </server>
  </servers>
</settings>

下边我们重点说两个比较有用的配置:

**:**镜像,如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。说白了,任何一个可以从仓库Y获得的构件,都能够从它的镜像中获取。在上边的示例中,我们使用中配置的http://nexus.d.xxx.net/nexus/content/groups/public来代理所有的远程仓库,其实这个代理一般情况下是你们公司的内网搭建的私服,在局域网内,加快访问速度等作用。

profiles: 可以配置构件和插件的远程仓库,并且可以通过来配置多个profile,最后通过<activeProfiles>来指定当前处于活跃状态(即有效的)的profile配置是哪一个。

idea访问私服与组件上传

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6l5KLwR0-1667628910858)(Maven简介.assets/image-20221104222032232.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y1lQBjPD-1667628910859)(Maven简介.assets/image-20221104222139954.png)]
像。说白了,任何一个可以从仓库Y获得的构件,都能够从它的镜像中获取。在上边的示例中,我们使用中配置的http://nexus.d.xxx.net/nexus/content/groups/public来代理所有的远程仓库,其实这个代理一般情况下是你们公司的内网搭建的私服,在局域网内,加快访问速度等作用。

profiles: 可以配置构件和插件的远程仓库,并且可以通过来配置多个profile,最后通过<activeProfiles>来指定当前处于活跃状态(即有效的)的profile配置是哪一个。

idea访问私服与组件上传

[外链图片转存中...(img-6l5KLwR0-1667628910858)]

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值