循环依赖或构建项目的正确方法

Анд*_*ков 4 java project gradle

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

  1. 该项目的大多数类必须编译成.jar文件并将服务器放入codebase/WEB-INF/libdir.这些类仅供服务器使用.

  2. 但我有一些需要在服务器和客户端上使用的类.这些类必须直接放在codebase/[package.class]中.

  3. 所有这些类都相互依赖,反之亦然.

故事结局.现在我尝试将我的项目从IDE构建移动到Gradle.我的项目包含两个相互依赖的模块.InteljID为我提供警告并编译此罚款.但是对于Gradle,它会被卡住.那么,我能以某种方式将这些类拆分为两个逻辑组,并且有一种简单的方法来构建上述结构吗?

我试图进行多项目构建,几个sourceSets,但我到处都得到了相同的循环依赖错误.

mat*_*sev 5

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

通常,您希望保持公共项目尽可能小.问问自己两个项目中是否需要某个班级?如果没有,它不应该是普通包的一部分.确保单向,类和项目之间的依赖关系保持单向.这可能包括很多重构,因为代码纠缠不清.

推荐阅读: