构建一个大型Liferay portlet项目

时间:2011-05-11 14:30:23

标签: architecture project structure portlet liferay-6

我们正在使用Liferay开展一项关于大型portlet开发工作的一些工作,我发现很难根据我们正在创建的各种portlet来构建这个项目。我们不确定我们应该以哪种方式构建我们的项目。我们在全球范围内分布了开发团队,我们使用git作为我们的版本存储库。我们使用Spring Portlet MVC开发portlet并使用服务构建器来实现服务层。

我可以考虑这三种方法。

  1. 为每个portlet创建一个新的Portlet项目

    • 将每个portlet保存在一个单独的portlet项目中可以轻松快速地开发,因为我可以让开发人员独立地处理它们。
    • 当portlet使用公共代码时,这可能会变得很痛苦。因此,在不同的portlet中可能存在大量相同类型的代码。
    • 这可能会失控,因为我们会有很多war文件,每个文件都会增加我们的运行时成本。
  2. 逻辑上将portlet分成多个portlet项目

    • 这将减少portlet项目的数量,并且可以重复使用大量代码。
    • 可以将某些控制置于此类结构中。
  3. 只创建一个包含所有portlet的portlet项目

    • 管理分布式开发团队将是最复杂的。
    • 大多数常用代码都可以重复使用。
    • 在此可以更轻松地实现一致性。
  4. 1和2的混合(基于我在下面的评论中与Dirk的讨论) 我认为这种方法需要混合使用1和2。

    • 我想给每个开发人员一个独立的portlet dev env以及一些关于常见组件的指南。
    • 通过这种方式,他们可以更好地控制portlet代码,而只关注特定于portlet的代码。
    • 同时,公共代码可能需要更多控制权,因为多人可以修改它。
  5. 如果您已经创建了liferay项目/ portlet以及您选择了哪种方法,我想知道您的专家意见。记住这些事情

    • 当各种开发人员开发多个portlet时,如何控制portlet开发?
    • 上述任何上述方法的优缺点是什么?
    • 如果上述方法都不好,请提及您能想到的最佳方法。

    感谢您阅读

2 个答案:

答案 0 :(得分:2)

为Dirk的答案添加一些内容,我的经验法则是在同一个项目中使portlet具有类似的维护周期 - 例如如果你更新其中一个,你通常会更新所有这些,因为他们创建一个应用程序,通过不同的UI呈现相同的数据。这基本上是你的选择2。

除此之外你把选项钉得很好 - 答案是“在中间”。使用app-server开销平衡分离。使用上面的经验法则,你已经设定好了。

关于开发环境:每个开发人员都应该在自己的环境中工作,但是,通过版本控制,他们当然可以在同一个项目上工作。

答案 1 :(得分:1)

我认为这在很大程度上取决于您实际构建的项目类型。您是否在封装功能的意义上讨论portlet,并将这样使用(即最终作为Liferay中的portlet)?如果他们的功能不相交而且他们不依赖于彼此,那么我认为应该把它们放在不同的项目中。

如果你有一个核心功能(例如持久层和相关逻辑或其他业务逻辑),你应该尽可能地重用它。因此,我不认为(1)是一个很好的解决方案,例如,这个通用逻辑应该分组在一个单独的项目中,并且portlet本身依赖于此。

作为一般方法:让开发人员都可以访问所有(或大多数)项目会有什么问题?公共代码可以被所有portlet重用,但仍然每个人都必须只为他/她工作。