5

首先,我从 C# 回到(返回)Java,如果我的术语或哲学没有完全一致,请道歉。

背景是这样的:我们有越来越多的为 Web 编写的内部支持工具。他们在前端使用 HTML5/AJAX/其他流行语,后端使用 Java。这些工具利用一个轻量级的内部框架,因此它们可以共享一个用于安全和其他配置的管理界面。每个工具都是由一个单独的作者编写的,我希望这种趋势会继续下去,所以我想让未来的作者更容易在我们已经决定使用的第三方库上保持“标准化”比如DI、单元测试、ORM等。

我们的包命名目前如下所示:

  • com.ourcompany.tools.framework
  • com.ourcompany.tools.apps.app1name
  • com.ourcompany.tools.apps.app2name

...等等。

所以这是我的问题:为了 Maven 设置、Eclipse 等,这些应用程序(和框架)中的每一个是否应该被视为一个单独的项目?

随着时间的推移,我们可能会有很多应用程序出现在这里,所以看起来分离会让依赖关系更清晰,让人们更容易地使用一个工具。另一方面,(1)可能在多个项目中“拆分”包结构的更深部分是一种代码异味,并且(2)将它们结合起来会使工具编写者更倾向于使用已经为另一个项目准备的第三方库工具。

FWIW,我最初的直觉是将它们分开。

你说什么,Java 大师?

4

5 回答 5

7

我绝对会把它们分开。出于 Maven 的目的,请确保每个应用程序/项目对框架/应用程序具有适当的依赖关系,这样当您只想构建单个应用程序时就不必构建所有内容。

于 2012-07-02T16:42:35.237 回答
3

我将我的项目分开,但使用父 pom 来包含所有依赖项和其他常见属性。单个工具/项目具有名称和对父项目的引用,以及任何特定于项目的依赖项(如果有)。这有助于保持公共库和依赖项,因为公共库和依赖项已经全部配置,但允许我专注于我需要使用的代码库的特定部分。

于 2012-07-02T16:45:56.163 回答
2

我肯定会把这些东西分成不同的项目。

您应该使用 Maven 自动处理依赖项/构建过程(包括您自己的内部共享库和第三方依赖项)。多个应用程序引用相同的共享库不会有任何问题 - 如果需要,您甚至可以保留多个版本。

这种方法的几个好处:

  • 这迫使您仔细考虑共享项目的 API 设计,从长远来看,这将是一件好事。
  • 它可能还会为您提供正确的源代码控制粒度 - 即您的开发人员可以单独检查并处理特定的应用程序或后端模块
于 2012-07-02T16:47:54.780 回答
1

如果项目的某个部分可能用于多个项目,那么将其拉出是有意义的。如果您需要更新其中一个常用项目中的代码,它也会使其更简洁。

于 2012-07-02T16:44:58.270 回答
0

如果您将它们放在一起,您将在开发、构建和部署工具时遇到更少的障碍。

我们有相反的情况,有许多单独的项目。将它们合并到一个项目树中后,我们的工作效率更高,这对我们来说比任何流行的约定都更重要。

于 2012-09-07T04:23:09.560 回答