【第64、65天】Maven、SVN的使用

本文详细介绍了Maven作为项目管理和构建工具的功能及其在项目中的应用方式,并深入探讨了SVN作为版本控制系统的基本操作与常见场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 Maven的使用

1.1 介绍

       Apache Maven是一款免费的,开源的,纯JAVA实现的项目管理及自动构建工具,由Apache软件基金会所提供。基于POM(Project Object Model,项目对象模型)概念,即每个Maven项目都会有其专属的pom.xml文件,利用这种中央信息片断能管理一个项目的构建、报告和文档等步骤。
       Maven可以将其管理的项目过程规范化、自动化、高效化以及赋予强大的可扩展性

1.2 功能

1.2.1 依赖管理

       在Maven项目中,jar包不再需要复制到WEB-INF的lib下,而是通过将其在仓库中的坐标写入到pom.xml中完成引入。

在这里插入图片描述

1.2.2 项目构建

       项目构建的生命周期分为三种,分别为default(处理项目的部署)、clean(处理项目的清理)、site(处理项目的文档生成)。他们都包含不同的生命周期。
       项目构建的生命周期是由phases构成的,下面是default(处理项目的部署) 项目构建生命周期的几个重要的phase:

	validate 验证项目是否正确以及必须的信息是否可用
	compile 编译源代码
	test 测试编译后的代码,即执行单元测试代码
	package 打包编译后的代码,在target目录下生成package(项目)文件
	integration-test 处理package(项目)以便需要时可以部署到集成测试环境
	verify 检验package(项目)是否有效并且达到质量标准
	install 安装package(项目)到本地仓库,方便本地其它项目使用
	deploy 部署,拷贝最终的package(项目)到远程仓库和替他开发这或项目共享,在集成或发布环境完成

以上的phase是有序的(注意实际两个相邻phase之间还有其他phase被省略),下面一个phase的执行必须在上一个phase完成后,(另外clean的作用是清空 target目录,并不属于Maven生命周期)。

若直接以某一个phase为goal(特定任务,即常用命令),将先执行完它之前的phase,如mvn install,将会先mvn validate、mvn compile、mvn test、mvn package、mvn integration-test、mvn verify最后再执行这个install phase。

1.3 pom.xml

       前面说过,Maven基于POM(Project Object Model,项目对象模型)概念。它是Maven工作的基础,pom文件中包含了项目的信息和项目构建时所需的配置信息。
       pom是可以继承的,通常对于一个大型的多服务项目,子模块的pom需要指定父模块的pom。可以使用dependencyManagement标签对dependency依赖进行管理,在父模块加入dependencyManagement后,dependency在其中正常声明却不引入。在子模块中引入时不必声明版本号,此时才会真正引入依赖的jar文件(build标签中的plugin同理于dependency)。 下面是pom.xml中标签以及其含义:

	project pom文件的顶级元素
	modelVersion 所使用的object model版本,为了确保稳定的使用,这个元素是强制性的。除非Maven开发者升级模板,否则不需要修改
	groupId 是项目创建团体或组织的唯一标志符,通常是域名倒写,如groupId  org.apache.maven.plugins就是为所有Maven插件预留的
	artifactId 是项目(artifact)唯一的基地址名
	packaging artifact打包的方式,如jar、war等等。默认为jar。这个不仅表示项目最终产生何种后缀的文件,也表示build过程使用什么样的lifecycle。
	version artifact的版本,通常能看见为类似0.0.1-SNAPSHOT,其中SNAPSHOT表示项目开发中,为开发版本
	name 表示项目的展现名,在maven生成的文档中使用
	url表示项目的地址,在maven生成的文档中使用
	description 表示项目的描述,在maven生成的文档中使用
	dependencies 表示依赖,在子节点dependencies中添加具体依赖的groupId、artifactId和version,而上述三个名词确定了一个artifact
	build 表示build配置,其中可以加入plugin插件
	parent 表示父pom

1.4 Artifact和Repositories

1.4.1 Artifact

       指的是一个项目生成的一系列文件,可以使jar/war等。每个项目(artifact)都由groupId:artifactId:version组成的标识符唯一识别。其中需要被依赖的项目(artifact)都要放在仓库(Repository)中,这个过程可以由生命周期phase的goal–>mvn install实现。

1.4.2 Repositories

       如其名,仓库。用来存储各种Artifact,分为本地/远端库。我们mvn install生成的、由远端仓库下载到本地的jar都存于本地仓库;远端仓库(中央仓库、企业/个人自建的如阿里云)指远程服务器上用于存储Artifact的仓库,包含的jar包需要我们在pom中声明dependency,编译代码时就会根据dependency去下载相应的jar(Artifact)到本地仓库供使用其中的功能。
       windows机器本地仓库地址默认为系统用户的.m2/repository下面。默认的远端仓库地址为http://mvnrepository.com/,这些均可以在maven/conf/settings.xml中修改。

1.5 用法

       Maven项目是根据Archetype(原型)创建的。
       原型对于项目的作用就相当于模具对于工具的作用,我们可以根据项目类型的需要使用不同的Archetype创建项目。通过Archetype我们可以快速标准的创建项目。

2 SVN的使用

2.1 介绍

       Apache Subversion(简称SVN,svn),一个开放源代码的基于C/S架构的版本控制系统,相较于RCS、CVS,它采用了分支管理系统。

2.2 作用

       代码管理 ,多人协同开发,备份 ,版本更新回退等。

2.3 常用命令

2.3.1 创建代码仓库
	svnadmin  create 存放代码的目录

该命令一般由项目经理/组长角色执行,一般在项目开始之前,一般一个项目设置一次。

2.3.2 启动监听(开猫)
	svnserve  -d  -r  仓库目录

该命令一般由组长角色 每天上班之前执行一次

2.3.3 检出
	svn  checkout 

把项目从代码服务器下载到本地机器,一般一个项目由程序员检出一次

2.3.4 更新
	svn update

该命令由程序员执行,每天多次

2.3.5 提交
	svn commit 

该命令由程序员执行多次

2.4 SVN提交文档冲突的情况

  • 当一方更新之后提交,另一方没有更新直接提交的时候,会出现冲突情况
  • 当冲突之后会出现四类文件:
  1. 包含冲突双方的文件
  2. 自己的文件
  3. 包含对方内容的文件
  4. 冲突之前的文件
  • 处理:
  1. 原则:1.先更新 2.提交
  2. 删除三个, 留一个最全的,手动改
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值