java中的包与项目分离

时间:2012-07-02 16:38:43

标签: java namespaces projects-and-solutions

首先,我将从C#回来(回到)Java,如果我的术语或哲学不完整,那么道歉。

以下是背景:我们为网络编写了越来越多的内部支持工具。他们使用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大师?

5 个答案:

答案 0 :(得分:7)

我绝对会将它们分开。出于Maven的目的,确保每个应用程序/项目都具有对框架/应用程序的适当依赖性,因此当您只想构建单个应用程序时,不必构建所有内容。

答案 1 :(得分:3)

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

答案 2 :(得分:2)

我肯定会把这些事情分成不同的项目。

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

这种方法的几个奖金:

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

如果将它们放在一起,那么开发,构建和部署工具的障碍就会减少。

我们遇到了相反的情况,有很多单独的项目。在将它们合并到一个项目树之后,我们的工作效率要高得多,这对我们来说比任何惯例趋势更为重要。