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

问题描述 投票:0回答:1

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

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

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

谢谢。

spring-mvc jsp reusability tld
1个回答
0
投票

所以这个概念很简单,因为你有maven作为依赖管理系统。 sonar nexus说,你可以让你的公司托管一个工件库。每个开发人员都应该将这个nexus实例作为他们的settings.xml中的发布存储库。

说团队A有2个模块corecommon-taglib,其中core是他们的内部核心代码,common-taglib是与其他团队共享的。他们可以简单地在nexus中发布工件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相同

© www.soinside.com 2019 - 2024. All rights reserved.