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

How to make other development teams build their own business components as jsp tags while avoiding dependencies?

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

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

但是如果财务团队自己需要开发自己的标签,有自己的业务流程和服务,怎么办? 我们想到了一些替代方案,但我们绝对不确定。 首先,每个团队可能有自己的共同项目。当他们在他们的 Web 项目中开发自己的页面时,他们可能会将业务标签移到他们的公共项目中。但这会产生复杂的依赖关系,例如 crm 团队依赖于出纳员团队的标签,而出纳员可能会依赖于另一个团队。 这里的另一个问题是,当我开发我的项目时,如果我使用来自 Teller 模块的帐户选择器标签,我不需要将与帐户选择器标签相关的所有源下载到我的工作区。 我们如何创建一个环境,让每个 team/business 模块都可以独立创建自己的 jsp 标签,公司中的每个其他团队都可以轻松使用?

谢谢。

所以这个概念很简单,因为你有 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. It uses JFrog artifactory, but concept are the same with apache archive and sonatype nexus