如何使其他开发团队将自己的业务组件构建为jsp标签,同时避免依赖关系?

时间:2018-06-30 22:06:23

标签: spring-mvc jsp reusability tld

我不确定这是否是设计原则问题,但找不到解决方案。 我在一个框架团队中工作,该团队负责为我们公司中的所有其他软件开发团队提供ui元素框架。我们有一个单页Web应用程序,每个团队都可以在其中开发自己的模块。因此,登录后,如果用户要搜索客户,她会看到来自crm应用程序的页面。然后,假设她要检查该客户的帐户余额,然后柜员应用程序中的控制器响应。所有项目都是在spring mvc中构建的,我们创建了诸如单选按钮,具有所有必要属性的复选框之类的jsp标签,并准备在其中使用Javascript方法。但是,由于有很多团队加入,所以他们需要创建自己的标签,尤其是业务标签,这些标签将通过组合我们提供的简单标签来创建。我们有一个常见的Java项目,其中所有标签都在tld文件中定义,并且它们(所有其他开发团队)将这个项目的jar作为对他们自己的web项目的maven依赖项添加。顺便说一下,每个团队都有自己的spring mvc项目。例如,资金管理团队拥有自己的Java项目,该项目将我们的常见项目添加为依赖项。因此,他们可以使用我们在其jsp文件中开发的标签。由于存在一个tld文件,因此属性定义如下:

<mycompany:photoTag id=“photoTag” photoSource=“{urlComingFromServer}” />

但是,如果资金管理团队本身需要使用自己的业务流程和服务来开发自己的标签,该怎么办? 我们认为有些替代方案,但我们绝对不确定。 首先,每个团队可能都有自己的共同项目。当他们在自己的Web项目中开发自己的页面时,他们可以将业务标签移动到他们的普通项目中。但这将创建复杂的依赖关系,例如crm团队依赖于柜员团队为其标签,也许柜员将依赖于另一个团队。 这里的另一个问题是,在我开发项目时,如果我使用柜员模块中的帐户选择器标记,则无需将与帐户选择器标记相关的所有源下载到我的工作区中。 我们如何创建一个环境,使每个团队/业务模块可以独立创建自己的jsp标记,该标记可被公司中的其他每个团队轻松使用?

谢谢。

1 个答案:

答案 0 :(得分:0)

所以这个概念非常简单,因为您已经将maven作为依赖项管理系统。您可以让您的公司托管工件仓库,例如声纳关系。每个开发人员都应在settings.xml中将此关系实例作为其发布存储库。

说团队A有2个模块corecommon-taglib,其中core是他们的内部核心代码,common-taglib是与其他团队共享的。他们可以简单地在链接中发布工件common-taglib

现在,团队B要使用common-taglib,他们可以简单地将taglib作为依赖项包含在pom.xml

<dependency>
    <groupId>your.organization.teama</groupId>
    <artifactId>common-taglib</artifactId>
    <version>1.1.0</version>
<dependency>

有了这些,他们甚至可以在发布管理中进行一些版本控制。这将是一个有用的博客post。它使用JFrog人工制品,但概念与apache archivesonatype nexus

相同