我有一个网络应用程序项目。

  • 此项目的大多数类都必须编译为.jar文件,然后将其放入服务器的codebase/WEB-INF/lib目录中。这些类仅由服务器使用。
  • 但是我有一些需要在服务器和客户端上使用的类。这些类必须直接放在codebase / [package.class]中。
  • 所有这些类都相互依赖,反之亦然。

  • 故事结局。现在,我尝试将项目从IDE构建移至Gradle。我的项目包含两个相互依赖的模块。 InteljID为我提供警告,并进行编译。但是,使用Gradle时,它会卡住。因此,我可以以某种方式将这些类分为两个逻辑组,并有一种简单的方法来构建上述结构吗?

    我试图进行多项目构建,使用多个sourceSet,但是到处都遇到相同的循环依赖错误。

    最佳答案

    您需要重构代码。一种方法是为服务器特定代码创建一个单独的项目,为客户端项目创建另一个项目,并为需要共享的代码创建一个公共(public)项目。接下来,可以让服务器项目和客户端项目依赖于公共(public)项目。但是,服务器项目和客户端项目本身之间不应存在任何依赖关系。

    通常,您希望使通用项目尽可能小。问自己两个项目中是否都需要某堂课?如果不是,则不应将其作为通用软件包的一部分。确保保持类,包和项目之间的依赖关系是单向的。由于代码纠结,这可能包括很多重构。

    推荐阅读:

  • “ob鲍勃叔叔”的Clean Code Martin
  • 迈克尔·费瑟斯(Michael Feathers)
  • 09-11 16:12
    查看更多