Architecture 构建大型Liferay portlet项目
我们正在使用Liferay开始一些大型portlet开发工作,我发现很难根据我们正在创建的各种portlet来构建这个项目。我们不确定我们应该以哪种方式组织我们的项目。我们的开发团队分布在世界各地,我们使用git作为我们的版本存储库。我们使用SpringPortletMVC来开发Portlet,并使用ServiceBuilder来构建服务层 我可以考虑这三种方法Architecture 构建大型Liferay portlet项目,architecture,project,structure,portlet,liferay-6,Architecture,Project,Structure,Portlet,Liferay 6,我们正在使用Liferay开始一些大型portlet开发工作,我发现很难根据我们正在创建的各种portlet来构建这个项目。我们不确定我们应该以哪种方式组织我们的项目。我们的开发团队分布在世界各地,我们使用git作为我们的版本存储库。我们使用SpringPortletMVC来开发Portlet,并使用ServiceBuilder来构建服务层 我可以考虑这三种方法 为每个Portlet创建一个新的Portlet项目 将每个portlet保存在一个单独的portlet项目中在开发过程中既简单又快速
- 将每个portlet保存在一个单独的portlet项目中在开发过程中既简单又快速,因为我可以让开发人员独立处理它们
- 在portlet使用公共代码的情况下,这可能会成为一种痛苦。因此,在不同的portlet中,相同类型的代码可能会大量增加
- 这可能会失去控制,因为我们将有许多war文件,每个文件都会增加我们的运行时成本
- 这将减少portlet项目的数量,并且可以重用大量代码
- 可以在这样的结构中放置一些控件
- 对于分布式开发团队来说,这将是最复杂的管理
- 大多数常用代码都可以重用
- 在这种情况下,加强一致性会更容易
- 我希望为每个开发人员提供一个独立的portlet dev env以及一些关于公共组件的指导原则李>
- 这样,他们就可以更好地控制portlet代码,只关注特定于portlet的代码李>
- 同时,公共代码可能需要更多的控制,因为多人可能会修改它
- 当各种开发人员正在开发多个portlet时,如何控制portlet的开发李>
- 上述任何一种方法的优缺点是什么李>
- 如果以上提到的方法都不好,请提及你能想到的最好的方法
感谢您的阅读我认为这在很大程度上取决于您实际构建的项目类型。您所谈论的portlet是否是封装功能意义上的portlet,并且将作为封装功能使用(即,最终作为Liferay中的portlet)?在我看来,如果它们的功能是不相交的,并且彼此不依赖,那么它们应该放在不同的项目中 如果您有一个核心功能(例如,持久层和相关逻辑或其他业务逻辑),那么您肯定应该尽可能多地重用它。因此,我认为(1)不是一个好的解决方案,例如,这个通用逻辑应该分组在一个单独的项目中,portlet本身也依赖于此
作为一种通用方法:让开发人员都可以访问所有(或大多数)项目会有什么问题?公共代码可以被所有Portlet重用,而且每个人都只需处理他/她的部分 除了Dirk的答案之外,我的经验法则是在同一个项目中使用具有类似维护周期的Portlet—例如,如果更新其中一个Portlet,通常会更新所有Portlet,因为它们生成一个应用程序,通过不同的UI呈现相同的数据。这基本上是你的选择2 除此之外,你很好地确定了选项——答案是“在中间”。平衡分离和应用服务器开销。使用上面的经验法则,你就可以了
关于开发环境:每个开发人员都应该在自己的环境中工作,但是,通过版本控制,他们当然可以在相同的项目上工作。感谢您的投入。我对每个portlet项目的想法是,它创建自己的war文件,每个项目都可能需要我们在其中包含所有spring依赖项。这可能是一个运行时成本。该项目有许多相互关联且相互依赖的Portlet。此外,他们将使用我们计划保持通用的同一服务层(正如您已经提到的)。高声思考,可能会在appserver级别保留所有spring和其他依赖项,这可能会降低运行时成本。如果依赖项是唯一的问题:因为Liferay本身有10亿个库(包括spring iirc),您可以使用liferay-plugin-package.properties(参见示例)引用它们。谢谢,这更有意义。