私服
仓库概念
Maven仓库:
1.Maven仓库分为本地仓库和远程仓库
2.远程仓库分为3种,分别是中央仓库、私服和其他公共库。
3.Maven的搜索顺序是从本地仓库找,找不到则到远程仓库获取依赖。
什么是私服:
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网的Maven用户使用。
私服是一台独立的服务器,用于解决团队内部的资源共享与资源同步问题。
使用的是Sonatype公司的一款maven私服产品——Nexus
Maven中所引依赖的版本RELEASE与SNAPSHOT的区别:
RELEASE:代表稳定的版本。
SNAPSHOT:代表不稳定、尚处在开发中的版本,也叫快照版本。
依赖范围和依赖传递
什么是依赖传递:
概念:某个项目依赖了另一个项目,另一个项目中jar包会不会传递到这个项目中来。
依赖范围:
依赖可选和依赖排除
前提:A项目依赖某个jar包,这个jar包能进行依赖传递的,然后B项目依赖A项目。
依赖可选:
由A项目来决定给不给,通过标签
在A项目的依赖配置中,通过optional子标签进行配置。它有两个取值:
•true:是可选依赖,不进行依赖传递
•false:默认值,进行依赖传递。
理解:也就是说你(B项目)依赖富婆(B项目),依赖可选就是富婆选择把这个钱(A项目依赖的jar包)给不给你的问题。
依赖排除:
由B项目来决定要不要,通过标签
理解:也就是说A项目把jar包传递给了B项目,但是你(B项目)这次硬了,选择不要富婆(A项目)的钱(jar包)。
依赖冲突
实际上写相同的版本IDEA不会报错,因为Maven会根据依赖冲突规则来处理。
依赖冲突是指项目依赖了相同Jar的不同版本, Maven已经做好了处理, 我们只要了解Maven的处理规则即可。
多环境配置与应用
maven提供配置多种环境的设定,帮助开发者使用过程中快速切换环境。
步骤:
1.创建的maven工程,复制资料jdbc.properties到resources目录下;
2.在pom.xml中配置profiles下配置三个不同的环境:开发,生产,测试;
3.在profile的properties中分别指定不同的jdbc.url属性值;
4.分别激活不同的profile;
5.需要指定buildàresourcesàresource的目录地址和开启替换的参数;
6.运行package命令,查看target中的jar包中jdbc.properties中的url是否不同。
定义多环境
<!--定义各种环境-->
<profiles>
<!--定义一套环境,开发环境,id:取的名字,jdbc.url:将来要替换的内容-->
<profile>
<id>maven_dev</id>
<properties>
<jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url>
</properties>
</profile>
<!--生产环境-->
<profile>
<id>maven_pro</id>
<properties>
<jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db</jdbc.url>
</properties>
</profile>
<!--测试环境-->
<profile>
<id>maven_test</id>
<properties>
<jdbc.url>jdbc:mysql://127.3.3.3:3306/ssm_db</jdbc.url>
</properties>
<!--激活当前的配置-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
在多环境代码下写Maven编译的配置:
<!--Maven编译的配置-->
<build>
<resources>
<!-- 指定资源的配置 -->
<resource>
<!-- 必须指定resource所在的目录 -->
<directory>${basedir}/src/main/resources</directory>
<!-- 指定是否替换 -->
<filtering>true</filtering>
</resource>
</resources>
</build>
使用多环境
方式一:直接在maven模块那里点击complie进行编译,会根据来编译相应模块。
方式二:
通过命令语句来编译,这样就不用在配置环境时写
多环境开发的作用:
因为同一个项目在开发阶段,测试阶段和生产环境运行的参数会不同设置多组不同的参数,可以快速在不同的环境参数中进行切换。
继承与聚合
主要的两个作用:
1.继承:子工程可以继承父工程中所有配置的jar包,子工程无需再次配置,父工程使用dependencies元素配置
2.版本锁定:子工程需要的时候再进行配置,不用指定jar包的版本号,父工程使用dependencyManagement元素配置(但是父工程dependencyManagement里面的jar包不会有(只是爸爸的愿望),当子工程去配置父工程dependencyManagement里面的jar包时不需要写版本,等于帮爸爸的实现了愿望)。
在父模块是一个空模块,打包类型是pom,只有pom.xml,没有src
父模块聚合所有的子模块,作用:配置在父工程中,聚合用于快速构建maven工程,一次性构建多个项目/模块。
注意事项:参与聚合操作的模块最终执行顺序与模块间的依赖关系有关,与配置顺序无关。
分模块构建
首先在父模块导入依赖;
创建实体类模块、持久层模块、业务层模块、Web层模块: