4

我最近加入了一个使用多个不同项目的项目。许多这些项目相互依赖,使用库中包含的另一个项目的 JAR 文件,因此无论何时更改一个项目,您都必须知道哪个其他项目使用它并更新它们。我想让这变得更容易,并且正在考虑将所有这些 java 代码合并到单独的包中的一个项目中。是否可以这样做,然后只在 jar 中部署一些包。我不想只部署其中的一部分,但如果可能的话,我已经被解雇了。

有没有更好的方法来处理这个?

4

5 回答 5

4

方法 1:使用 Hudson

如果您使用像Hudson这样的持续集成服务器,那么您可以配置上游/下游项目(请参阅术语)。

一个项目可以有一个或多个下游项目。如果当前项目构建成功,则将下游项目添加到构建队列中。即使当前项目不稳定(默认为关闭),也可以设置它应该将下游项目添加到调用队列中。

这意味着,如果有人将某些代码签入到一个项目中,那么如果它破坏了其他构建,至少你会得到早期警告。

方法二:使用 Maven

如果项目不是太复杂,那么也许您可以创建一个主项目,并将这些子项目作为该项目的子模块。然而,将项目改造成 Maven 喜欢的形式可能非常棘手。

于 2009-03-04T12:46:30.677 回答
3

如果您使用 Eclipse(或任何体面的 IDE),您可以使一个项目依赖于另一个项目,并在您的 SVN 中提供该配置方面,并在您的构建脚本中假设检查。

请注意,如果一个项目依赖于另一个项目的某个版本,则 Jar 文件是一种更简单的管理方式。重大重构可能立即意味着在所有其他项目中进行大量工作来修复问题,而您可以根据需要将新 jar 放入每个项目,然后进行迁移工作。

于 2009-03-04T12:43:12.383 回答
2

我想这可能完全取决于具体的项目,但我认为我会将所有项目分开。这有助于保持整个系统松散耦合。您可以使用诸如maven之类的工具来帮助管理项目之间的所有依赖关系。像这样管理依赖项是 Maven 的主要优势之一。

于 2009-03-04T12:47:06.027 回答
1

使用 Ant 作为您的构建工具,您可以以任何您想要的方式打包您的项目。但是,将部分代码保留在分发之外似乎很容易出错;您可能会不小心遗漏了必要的课程(大概,您的所有课程都是必需的)。

关于将代码保存在不同的项目中,我有一个宽松的指导方针。将更改的代码一起保存在同一个项目中,并将其打包到自己的 jar 文件中。当您的某些代码可以分解为更改频率低于主应用程序的实用程序库时,此方法效果最佳。

例如,您可能有一个应用程序,其中您从 Web 服务 WSDL 生成了 Web 服务客户端类(使用类似 Axis 库的东西)。Web 服务接口可能不会经常更改,因此您不希望在主应用程序构建中一直重复执行重新生成步骤。为这部分创建一个单独的项目,以便您只需在 WSDL 更改时重新创建 Web 服务客户端类。创建一个单独的 jar 并在您的主应用程序中使用它。这种风格还允许其他项目重用这些实用模块。

遵循这种风格时,您应该在 jar 清单中放置一个版本号,以便您可以跟踪哪些应用程序正在使用您的模块的哪些版本。根据您想要采取的程度,您还可以在 jar 中保留一个文本文件,详细说明每个修订版发生的更改(很像开源库)。

于 2009-03-04T13:17:10.087 回答
0

一切皆有可能(几年前我们也遇到过同样的情况)。它的难易程度取决于您的 IDE(重构、合并、组织新项目)和构建工具(部署)。我们使用 IDEA 作为 IDE,使用 Ant 作为构建工具,这并不难。一个星期天(没有人工作+提交),2 个人在一台电脑上。

我不确定你的意思

“仅部署 jar 中的一些包”

我认为您将在运行时需要所有这些,不是吗?据我了解,它们相互依赖。

于 2009-03-04T12:45:42.300 回答