这实际上只是一个 Maven/JSF 问题。Jenkins 并没有真正进入这个等式,CloudBees 也没有(注意我们 [cloudbees] 也支持 Subversion 托管的存储库,它可能更适合也可能不适合您的项目结构......无论如何,GIT 恕我直言“更好”,所以我会去如果是我,GIT over Subversion)
你真的有三个选择。
将 XHTML 保存在单独的 GIT 存储库中
将所有内容保存在一个存储库中。
1和2的一种混合
选项1
这将带你走上 GIT 子模块的道路......这是我更喜欢 Subversion 而不是 GIT 的一种情况......不,我并不是说这svn:externals
比 GIT 更好,Subversion 允许你检查更多存储库的一部分,因此 UI 团队可以检查 XHTML 文件所在的子路径,IOW
$ svn co https://svn-user1530669.forge.cloudbees.com/jsf-app/trunk/web-module/src/main/webapp web-content
$ cd web-content
将为 UI 团队工作,并且
$ svn co https://svn-user1530669.forge.cloudbees.com/jsf-app/trunk jsf-app
$ cd jsf-app
$ mvn package
将适用于 Java 开发人员。
要使用 GIT 实现相同的功能,需要使用子模块,因此您将web-module/src/main/webapp
在 jsf-app GIT 存储库中拥有一个子模块。
当 Java 开发人员还需要对 XHTML 文件进行调整时,这会变得很痛苦,这取决于 IDE,要让子模块中的提交正确执行可能会很棘手。此外,您现在没有要跟踪的单个修订,两个存储库可以独立移动......这会降低 GIT 的某些功能。
当您想要使用 Maven 发布插件(并且您应该想要)时,子模块会阻止您,因为发布插件当前不支持标记子模块的想法,并且有两个单独的存储库可以再次跟踪问题。
选项 2
这确实是更好的选择......即使它正在做你说你不想做的事情。
这里的诀窍是让 UI 开发人员的生活更轻松。
您应该设置一个带有默认目标的漂亮 Maven 配置文件,该配置文件最终会使用例如 jetty:run 运行 Web 应用程序,例如,请参见此pom 配置文件如果您签出该项目并运行
$ mvn -Pdemo
它将从构建了所有依赖模块的子模块启动 Web 应用程序。
使用这种方法意味着 UI 人员还可以测试集成到 JSF 应用程序中的 UI 更改,从而减少 Java 人员的负载。
选项 3
这是一种混合,XHTML 和 Java 有单独的 GIT 模块,但它们是有效的 Maven 项目。
您可以通过两种方式实现这一目标...
第一个优点是 Java 开发人员可以快速使用 Java 代码,但副作用是修复 XHTML 很棘手,例如数据绑定属性
第二个使调整 Java 变得更加困难(必须继续运行mvn install
),如果 UI 人员想要启动 Maven 打包,他们必须从远程 Maven 存储库中拉下 Java .JAR,因此您可能会暴露一些 Java 内部结构给用户界面的家伙。
TL;博士
就个人而言,除非对 UI 人员保密很重要,否则我会选择选项 2