【问题标题】:Extending/Inheriting Tomcat Projects扩展/继承 Tomcat 项目
【发布时间】:2011-05-16 14:47:37
【问题描述】:

我们正在使用 Eclipse + Tomcat 插件开发 webapps。我们最近启动了一个新的应用程序,它将在 Facebook 和 StudiVZ(德国的 FB 竞争对手)上运行。由于应用程序的功能将 95% 相同,我们将代码拆分为单独的 Eclipse 项目(app-core、app-facebook、app-vz)。 -core 项目源代码链接到 Eclipse 中的 -facebook 和 -vz 项目中。我们还使用 Hudson 进行 CI 并制作了在构建之前从 -core 项目导入代码的 ant 脚本。所以基本上我们尝试在项目级别继承。

所描述的方法有一些缺陷:

  • 版本控制很复杂
  • -core 项目不能独立运行,这使得自动测试部分不可能
  • 我们需要修改一些-core项目类所依赖的模型
  • 其他让我认为这不是最佳解决方案的问题

有人对更好的解决方案有建议吗?

【问题讨论】:

    标签: java eclipse tomcat


    【解决方案1】:

    有大量可用于 Java 的构建工具专门解决依赖管理和版本控制问题。其中许多都与 Hudson 和 Eclipse 集成。

    我建议查看Maven 以及它如何进行依赖管理作为一个很好的起点。即使您不使用Maven 本身,许多解决方案都建立在Maven 的依赖管理机制之上。 Apache Ivy 之类的东西允许你使用 maven 依赖管理,但仍然使用你自己的自定义 Ant 脚本;而像Gradle 这样的东西是批发替代品。

    【讨论】:

    • Gradle 允许导入 Ant 脚本。所以它不是批发替换
    【解决方案2】:

    您应该能够将您的项目分成 3 个或更多部分,然后通过 Java Build Path 建立依赖关系。您需要清理项目之间的依赖关系。如果需要根据 -facebook 或 -vz 项目来配置核心组件,则可能需要单独配置,甚至可能使用 Spring 或类似的依赖注入框架。

    在尝试将重用引入基于 Web 的 Java 项目时,问题通常出现在 UI 代码中。考虑到这种方法构建的框架并不多。

    【讨论】:

    • 关于 UI 问题:至少 JSF 支持包含/重用由外部 JAR 提供的模板。
    • @BalusC 当我们为业务部门的应用程序设计一个通用平台时,我们从 Struts 1.2 开始。重用 Struts UI 的方法太老套了,我们只能用 WSAD 来做,不能在 Eclipse 中做。我们玩了一点 JSF,最后选择了 GWT。那时还没有 GWT 的 MVC 支持框架,所以我们不得不推出自己的。现在,我们不仅可以共享小部件,还可以共享应用程序可重用模块的完整 UI。
    【解决方案3】:

    我不使用/讨厌 Eclipse[1],但可以指出我们如何处理类似问题。

    我们将 Maven 与 IntelliJ 结合使用。特别是,它们都支持modules,它们已经定义了内部依赖关系。在您的情况下,它可能是 -fb-vz 模块,具体取决于 core,或者您可以将核心拆分为更小的部分(例如 DAO业务逻辑等)。

    编译时,“上层”模块的可交付成果将用于构建“下层”模块。

    让我们回顾一下您提出的要点/缺陷:

    • 版本控制不再是问题,因为所有内容都位于您选择的 Subversion/GIT/VCS 的同一根目录下
    • 为什么会有这样的问题?当然这不应该是单元测试的问题,因为我如何理解 TDD,这些不应该需要复杂的环境。对于自动化测试,您必须测试核心 API(因为这是核心和其他一切之间的接口,对吧?)因此这不应该需要任何前端的东西?
    • 你需要解释你的其他观点来说明你为什么不喜欢它

      1. 要求开发人员使用他/她选择的 IDE 以外的任何东西是违反日内瓦公约的。

    【讨论】:

      猜你喜欢
      • 2017-05-18
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 2013-06-23
      • 2017-03-16
      • 2010-11-11
      • 2013-07-21
      • 2017-10-30
      相关资源
      最近更新 更多