鉴于平台的架构,将前台服务和后台服务拆分成两个项目单独部署,通过数据库,以及文件服务器,消息队列等进行通讯。考虑到前后台可重用的代码较少,综合评估后只有model层会被重用,为了开发方便将model单独拆出为一个maven子项目。并通过maven的版本管理来管理model层的jar包。
我们这里通过maven和nexus私服来管理版本。在这个地方我们使用SNAPSHOT版本,快照版本的好处是,每次deploy都在SNAPSHOT后面跟一个时间戳。这样每次检出时都会检出最新的SNAPSHOT版本。方便开发者间的协同开发。
项目到一个阶段后,就需要发布一个正式的版本(release版本):
1. 在trunk中,更新pom版本从1.0-SNAPSHOT到1.0
2. 对1.0打一个svn tag
3. 针对tag进行mvn deploy,发布正式版本
4. 更新trunk从1.0到1.1-SNAPSHOT
这个可以手动来操作,也可以借助maven的插件来完成以上操作。在此就不介绍了。
在这里是默认已经安装好了maven 和 nexus私服。
1. 首先我们用nexus管理员账号登录nexus 创建一个Hosted Repositories ,加入命名为test
要注意1,2,3这三个圈出的地方,1处主要是自定义的库名 ,2.处是选择SNAPSHOT版本主要是开发阶段主要是以发布快照版本为主。3,选择Allow Redeploy 。
2.创建好仓库后,启用deployment账户,在security->Users管理中重置deployment用户的密码,默认deployment用户有所有仓库的全部控制权,admin用户没有权限。
3.然后回到model项目中在项目的pom.xml中添加一下代码,这个地方的URL就是上面创建的Hosted Repositories
<span style="white-space:pre"> </span><distributionManagement>
<span style="white-space:pre"> </span><repository>
<span style="white-space:pre"> </span><id>harmay</id>
<span style="white-space:pre"> </span><url>http://IP:PORT/nexus/content/repositories/test</url>
<span style="white-space:pre"> </span></repository>
<span style="white-space:pre"> </span></distributionManagement>
4.然后到~/.mvn/下面去找setting.xml文件,如果不存在则创建:
<span style="font-family:Microsoft YaHei;font-size:14px;"><?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>test</id>
<username>deployment</username>
<password>*******</password>
</server>
</servers>
</settings></span>
这里面有几个地方需要注意:一是<id>节点的ID需要和第三步中的ID相同,然后用户名就是deployment,密码是上面设置的密码。
保存后到model项目下运行mvn deploy,则会创SNAPSHOT版本的JAR在nexus私服上,其他人就可以通过maven update到最新的jar包进行开发。
再次过程中可能会出现的错误:
1. Return code is: 401, ReasonPhrase: Unauthorized 没有被授权操作仓库
检查仓库的设置,以及用户名密码配置。
2. Return code is: 400, ReasonPhrase: Bad Request.
检查仓库的Policy(Snapshot,releases)是否和你项目中的Pom.xml中version的是否匹配。