tan*_*ens 4 java svn refactoring maven-2 release-management
与'普通'svn目录结构相反,我使用以下结构:
trunk/ project1/ project2/ project3/ ... branches/ project1-branch/ project1/ project2/ ... project2-branch/ project1/ project2/ ... tags/ project1/ V1 V2 ...
如您所见,我没有为每个项目单独的三元组(主干/分支/标签).
对于开发,我会检查包含我需要的所有项目的主干(有时是稀疏结账)(项目之间存在依赖关系,而某些项目只是库).
我在这里看到的好处是:
更新和签入很简单,因为我有一个所有项目的公共根目录(主干).一个简单svn update
或svn commit
全部.
创建标签或分支很简单,因为它只是我必须拥有的主干svn copy
.(分支和标签实际上包含的项目比需要的多,但是它svn copy
很便宜,如果需要,我仍然可以在分支或标签上进行稀疏检查.)
将资源从一个项目移动到另一个项目很容易,因为它们都存在于同一个存储库中.
当我正在完全检查主干时,全局重构(例如更改常用类的包)很容易,因为我可以确定我不会错过任何项目.
合并很容易,因为即使从一个项目到另一个项目的重构移动,我总是可以立即合并整个分支.
我打算迁移到maven并将所有项目从trunk转移到maven项目.我想从maven依赖管理和可用的插件中受益(现在我正在使用巨大的自定义ant文件).
现在我的问题是:
我是否必须更改svn目录结构以为每个项目提供自己的三元组(主干/分支/标签)?我猜答案是'是'.
如果我改变结构,我会松开上面提到的哪些好处(我的意思是用maven做什么会更复杂)?
用maven做同样的方法是什么?
Pas*_*ent 13
没有这样的东西,一个"正常"的svn目录结构.有在讨论不同的方法被称为"规划你的版本库组织"一节中的版本控制使用Subversion的书(甚至是/trunk
,/tags
,/branches
名称只是约定,有一个标签与分支没有区别,只是在你对他们的看法) .
- 我是否必须更改svn目录结构以为每个项目提供自己的三元组(主干/分支/标签)?我猜答案是'是'.
不,你不有.例如,请参阅Apache ServiceMix源代码树:它是一个多模块maven项目,但模块在一个项目下trunk
.另一方面,XWiki 不是单一产品,而是源代码库页面中详述的产品和项目生态系统,它有许多主干/分支/标签.您可以在此处浏览其存储库以了解布局.
但是选择一种方法或另一种方法不仅仅是品味问题,它实际上取决于您的发布周期(mvn release
稍后会详述).如果项目中的组件共享相同的版本(la ServiceMix),我只使用一个中继.如果他们有一个独立的发布周期(la XWiki),我会使用多个"trunk/tags/branches"结构,就像这个线程中描述的那样:
Run Code Online (Sandbox Code Playgroud)myrepo + .links (2) + trunks + pom.xml + parent-pom (1) + trunk + pom.xml + project-A + trunk + pom.xml + project-B + trunk + pom.xml
1)项目的父POM有自己的发布周期.每个组件的POM都将它用作父级(简单地用
groupId
和 引用artifactId
,否relativePath
).对于版本,您必须首先释放父POM.2)这是一种结构,可以轻松检查项目的特定分支,即通常是主干.subversion用户检出myrepo/.links/trunk以获取所有源的头版.诀窍是,该目录包含外部链接(即具有
svn:externals
属性)到该项目的所有其他模块的中继(parent-pom,project-A,project-B).此目录中的pom.xml永远不会发布,它只包含三个模块的模块部分,以启用多模块构建.使用此构造,您可以轻松设置分支,例如:Run Code Online (Sandbox Code Playgroud)myrepo + .links + branch-2.x + pom.xml
我已多次使用此设置,它运行良好.
- 如果我改变结构,我会松开上面提到的哪些好处(我的意思是用maven做什么会更复杂)?
让我逐一回答每一点.
svn externals更新和签入很容易.一个简单svn update
或svn commit
全部.
创建标记或分支很简单,因为maven发布插件将为您处理(标记和分支将更清晰).
将资源从一个项目移动到另一个项目看起来并不复杂.
全局重构(例如更改常用类的包)很容易,因为您仍然可以完全检查主干.
合并可能不那么容易.但是你真的经常将课程从一个项目转移到另一个项目吗?
- 用maven做同样的方法是什么?
如果需要,使用maven发布插件和svn外部的建议布局之一.
归档时间: |
|
查看次数: |
3933 次 |
最近记录: |