2

我正在将我的 JSF 应用程序迁移到 Cloudbees——基本上是一个 Maven/Jenkins/Git 平台。不幸的是,我对 Maven/Jenkins/Git 没有太多经验。

我想创建一种简单的方式,让 UI 开发人员可以与 xhtml 和相关的 UI 文件保持同步,而无需他们机器上的 Java 代码。Java 开发人员需要 UI 代码和 Java 代码。在这两种情况下,当他们推送他们的内容时,它应该可以与 Jenkins 持续构建过程集成。

您是否可以提出一个好的模式或建议来划分项目,以便 UI 开发人员拥有他们的 XHTML 和其他文件(图像、CSS 等),而 Java 开发人员拥有一切?这需要与 Maven、Git 和 Jenkins 一起使用。感谢所有的帮助。

最后一件事 - java 开发人员将使用 Eclipse。UI 开发人员不需要使用 Eclipse,因此链接将是 Git。

4

1 回答 1

1

这实际上只是一个 Maven/JSF 问题。Jenkins 并没有真正进入这个等式,CloudBees 也没有(注意我们 [cloudbees] 也支持 Subversion 托管的存储库,它可能更适合也可能不适合您的项目结构......无论如何,GIT 恕我直言“更好”,所以我会去如果是我,GIT over Subversion)

你真的有三个选择。

  1. 将 XHTML 保存在单独的 GIT 存储库中

  2. 将所有内容保存在一个存储库中。

  3. 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 项目。

您可以通过两种方式实现这一目标...

  • 使用 Maven War Overlays将 XHTML 模块<packaging>war</packaging>提取到 Java Web 应用程序中

  • 让 XHTML 模块成为一个<packaging>war</packaging>直接引入 Java 依赖项的模块。

第一个优点是 Java 开发人员可以快速使用 Java 代码,但副作用是修复 XHTML 很棘手,例如数据绑定属性

第二个使调整 Java 变得更加困难(必须继续运行mvn install),如果 UI 人员想要启动 Maven 打包,他们必须从远程 Maven 存储库中拉下 Java .JAR,因此您可能会暴露一些 Java 内部结构给用户界面的家伙。

TL;博士

就个人而言,除非对 UI 人员保密很重要,否则我会选择选项 2

于 2012-08-21T11:16:05.337 回答