我有一个现有项目,我将分成三个项目。假设现有项目名为A.我想将我可以使用的逻辑提取到另外两个项目B和C.所以现在项目A仅依赖于B和C,项目A具有该特定项目的特殊代码。但是,B和C都需要User类才能工作(安全性)。目前我每个地方都使用相同的User类。是否可以在每个项目中使用相同的User类,如果是,如何使用?你会把它留在哪里?不同的项目使用相同的User类听起来是个坏主意吗?如果我需要处理多个User类,我应该在哪里进行转换?
答案 0 :(得分:2)
最好的方法是创建一个多模块构建,如下所示:
project-app (pom.xml)
+-- project-A (pom.xml) dep: project-B,project-C
+-- project-B (pom.xml) dep: user
+-- project-C (pom.xml)
+-- user (pom.xml)
这将解决您的要求。但是,您的开发可能超出了想要创建其他项目的意义,让我们称之为 project-new-app ,这也需要用户类。这表明你必须走向另一个方向。为用户部分创建单独的项目:
user (pom.xml)
现在 project-new-app 可以将用户部分用作简单依赖项:
project-new-app (pom.xml) dep: user
+--- maybe more..
之后,您的所有项目都可以依赖用户项目。所以最初的 project-app :
project-app (pom.xml)
+-- project-A (pom.xml) dep: project-B,project-C
+-- project-B (pom.xml) dep: user
+-- project-C (pom.xml)
答案 1 :(得分:0)
进一步扩展Karl-Heinz的回答:
project-app (pom.xml)
+-- project-A : dep: project-B
+-- project-B : dep: user
+-- project-C : dep: user-impl1
+-- project-D : dep: user-impl2
+-- user-api : contains either or both:
a) a User interface,
b) an AbstractUser class to be extended
+-- user-impl1 : some implementation of the User class
+-- user-impl2 : some other implementation of the User class
在上面的示例中,我将由您决定将依赖关系绑定到user-impl1
和user-impl2
的位置。
确保您的代码使用User
类/接口的更通用的实现,并且您的代码重构应该可以正常工作。
无论如何, 不 复制模块周围的User类。如果你使用副本,你很快就会发现它会让你比你想象的更麻烦。