仓库:用于存储资源,包含各种jar包
仓库分类:
本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源
远程仓库:非本机电脑上的仓库,为本地仓库提供资源
- 中央仓库:Mavenl团队维护,存储所有资源的仓库
- 私服:部门/公司范围内储资源的仓库,从中央仓库获取资源
私服的作用:
(1)保存具有版权的资源,包含购买或自主研发的jar.
(2)中央仓库中的jar都是开源的,不能存储具有版权的资源.
(3)一定范围内共享资源,仅对内部开放,不对外共享.
依赖配置与依赖传递
依赖传递
直接依赖:在当前项目中通过依赖配置建立的依赖关系
间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源
路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的依赖范围
依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用范围
主程序范围有效(main文件夹范围内)
测试程序范围有效(test文件夹范围内)
是否参与打包(package?指令范围内)
范围作用域:
scope 主代码 测试代码 打包 范例 compile √ √ √ log4j test √ junit provided √ √ servlet runtime √ jdbc 依赖范围的传递性
compile(直接依赖) test provided runtime compile(间接依赖) compile test provided runtime test provide runtime runtime test provided runtime 依赖排除
依赖其他模块 <dependency> <groupId>com.itheima</groupId> <artifactId>project03</artifactId> <version>1.0-SNAPSHOT</version> <!--忽略其他模块中的某个依赖--> <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency>
可选依赖
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <!--不让别人发现自己拥有这个依赖--> <optional>false/optional> </dependency>
<!-- 创建一个空模块,打包类型定义为pom -->
<packaging>pom</packaging>
<!-- 定义当前模块进行构建操作时关联的其他模块名称-->
<modules>
<module>../ssm controller</module>
<module>../ssm service</module>
<module>../ssm dao</module>
<module>../ssm pojo</module>
</modules>·
注意事项:参与聚合操作的模块最终执行顺序与模块间的依赖关系有关,与配置顺序无关
<!-- 制作方式:在子工程中声明其父工程坐标与对应的位置-->
<!-- 定义该工程的父工程-->
<parent>
<groupId>com.itheima</groupId>
<artifactId>ssm</artifactId>
<version>1.0-SNAPSHOT</version>
<!--填写父工程的pom文件-->
<relativePath>../ssm/pom.xml</relativePath>
</parent>
继承与聚合
1.作用
聚合用于快速构建项目
继承用于快速配置
- 相同点:
聚合与继承的pom.xml文件打包方式均为pom,.可以将两种关系制作到同一个pom文件中
聚合与继承均属于设计型模块,并无实际的作用
- 不同点:
聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己
版本管理
工程版本
SNAPSHOT(快照版本)
项目开发过程中,为方便团队成员合作,解决模块间相互依赖和时时更新的问题,开发者对每
个模块进行构建的时候,输出的临时性版本叫快照版本(测试阶段版本)
快照版本会随着开发的进展不断更新
RELEASE(发布版本)
项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构件文件
是稳定的,即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本
引进properties文件(root文件中引入任意模块的properties文件)
<!--配置资源文件对应的信息--> <resources> <resource> <directory>${project.basedir}/src/main/resources</directory> <filtering>true</filtering> </resource> </resources>
私服
依赖下载
<!-配置访问服务器的权限,用户名密码->
<servers>
<server>
<id>heima-release</id>
<username>admin</username>
<password>admin</password>
</server>
<server>
<id>heima-snapshots</id>
<username>admin</username>
<password>admin</password>
</server>
</servers>
<!--先去阿里云中央仓库找,找不大再去自己搭建的私服找-->
<mirrors>
<mirror>
<id>nexus-aliyun </id>
<mirrorOf>central </mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<!--自定义的neima私服-->
<mirror>
<id>nexus-heima</id>
<mirrorof>*</mirrorof>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
</mirrors>
依赖上传
<!--idea发布配匿管理-->
<distributionManagement>
<repository>[
<id>heima-release</id>
<url>http://localhost:8081/repository/heima-release/</url>
</repository>
<snapshotRepository>
<id>heima-snapshots</id>
<url>http://localhost:8081/repository/heima-snapshots/</url>
</snapshotRepository>
</distributionManagement>