Java 从不寻常的svn目录结构迁移到maven?
与“普通”svn目录结构相反,我使用以下结构: trunk/ project1/ project2/ project3/ ... branches/ project1-branch/ project1/ project2/ ... project2-branch/ project1/ project2/ ... tags/ project1/ V1 V2 ... 树干/ 项目1/ 项目2/ 项目3/ ... 分支机构/ 项目1分部/ 项目1/ 项目2/ ... 项目2分部/ 项目1/ 项目2/ ... 标签/ 项目1/ V1 V2 ... 正如您所看到的,我没有为每个项目提供单独的三元组(主干/分支/标记) 对于开发,我对包含我需要的所有项目的主干进行签出(有时是稀疏签出)(项目之间存在依赖关系,有些项目只是库) 我从中看到的好处是:Java 从不寻常的svn目录结构迁移到maven?,java,svn,maven-2,refactoring,release-management,Java,Svn,Maven 2,Refactoring,Release Management,与“普通”svn目录结构相反,我使用以下结构: trunk/ project1/ project2/ project3/ ... branches/ project1-branch/ project1/ project2/ ... project2-branch/ project1/ project2/ ... tags/ project1/ V1 V2 ... 树干/ 项目1/ 项目2/ 项目3
- 更新和签入很容易,因为我有一个所有项目的公共根目录(主干)。一个简单的
或svn更新
就可以完成这一切svn提交
- 标记或分支的创建很简单,因为只有主干需要
。 (分支和标记实际上包含的项目比需要的多,但是svn复制
很便宜,如果需要,我仍然可以对分支或标记进行稀疏签出。)svn副本
- 将资源从一个项目移动到另一个项目很容易,因为它们都位于同一个存储库中
- 全局重构(例如更改常用类的包)在我处理主干的完整签出时很容易,因为我可以确保我不会错过一个项目
- 合并很容易,因为我总是可以一次合并整个分支,即使从一个项目到另一个项目进行重构
我打算迁移到maven,并将所有项目从主干项目拆分到maven项目。我想从maven依赖项管理和可用插件中获益(现在我正在使用巨大的定制ant文件) 现在我的问题是:
- 我是否必须更改svn目录结构,为每个项目提供自己的三元组(trunk/branchs/tags)?我想答案是肯定的
- 如果我改变了结构,我会失去上面提到的哪些好处(我的意思是,用maven做这件事会更复杂些什么)
- 使用maven的等效方法是什么
- -记住也要阅读评论
- 没有“正常”的svn目录结构。正如本书第四部分所讨论的,有不同的方法(即使是
/trunk
、/tags
、/branchs
名称都只是约定,标记和分支之间没有区别,除了你对它们的感知)
- 我是否必须更改svn目录结构,为每个项目提供自己的三元组(trunk/branchs/tags)?我想答案是肯定的
主干下。另一方面,XWiki并不是一个单一的产品,而是一个产品和项目的生态系统,如其页面所述,它有许多主干/分支/标记。您可以浏览其存储库以了解布局
但是,选择一种或另一种方法不仅仅是品味的问题,它实际上取决于您的发布周期(更多信息请参见mvn release
)。如果项目中的组件共享同一版本(la ServiceMix),我将只使用一个主干。如果它们有一个独立的发布周期(la XWiki),我会使用多个“主干/标记/分支”结构,如中所述:
1) 项目的父POM已
一个自己的发布周期。每一个
组件的POM将使用它作为父级
(仅使用groupId
和
artifactId
,norelativePath
)。对于
释放你必须释放
首先是父母
2) 这是一个使
特定分支的轻松签出
该项目的一部分,即通常
大旅行箱subversion用户签出
myrepo/.links/trunk获取头部
修订所有来源。诀窍是,,
该目录包含的
外部链接(即与
svn:externals
属性)到
本系统所有其他模块的中继线
项目(母公司pom、项目A、,
项目B)。本文中的pom.xml
目录从未发布,它
只包含一个模块部分,用于
这三个模块用于启用多个
模块构建。用这种构造
您可以轻松地设置分支
e、 g:
我已经用过很多次了,效果很好
- 如果我改变了结构,我会失去上面提到的哪些好处(我的意思是,用maven做这件事会更复杂些什么)
让
myrepo
+ .links (2)
+ trunks
+ pom.xml
+ parent-pom (1)
+ trunk
+ pom.xml
+ project-A
+ trunk
+ pom.xml
+ project-B
+ trunk
+ pom.xml
myrepo
+ .links
+ branch-2.x
+ pom.xml