多个Java项目和重构

4
我最近加入了一个使用多个不同项目的项目。很多这些项目都相互依赖,使用其他项目的JAR文件包含在库中,因此每当您更改一个项目时,您必须知道哪些其他项目使用它并更新它们。我想让这变得更容易,考虑将所有Java代码合并到单个项目中的不同包中。这样做后,是否可以仅部署一些包的JAR文件?我希望不仅部署其中的一部分,但有人问我是否可能。

有更好的处理方法吗?

5个回答

4

方法一: 使用Hudson

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

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

这意味着,如果有人向一个项目提交了一些代码,至少您会在其他构建被破坏之前得到早期警告。

方法二: 使用Maven

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


3

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

请注意,如果一个项目依赖于另一个项目的特定版本,那么Jar文件是管理这一点的更简单的方法。重大的重构可能会导致所有其他项目中需要修复很多问题,而您只需根据需要将新的jar文件放入每个项目中,并进行迁移工作即可。


2

我想这可能取决于具体的项目,但我认为我会保持所有项目的独立性。这有助于保持整个系统的解耦性。您可以使用诸如Maven这样的工具来帮助管理项目之间的所有依赖关系。像这样管理依赖关系是Maven的主要优点之一。


1
使用Ant作为您的构建工具,您可以以任何想要的方式打包项目。然而,将代码的某些部分从分发中排除似乎容易出错;您可能会意外地遗漏必要的类(假定所有类都是必要的)。
关于将代码保留在不同项目中,我有一个宽松的指导方针。将一起更改的代码放在同一个项目中,并将其打包到自己的jar文件中。当您的一些代码可以拆分为比主应用程序更不经常更改的实用程序库时,这种方法效果最佳。
例如,您可能有一个应用程序,其中您已从Web服务WSDL生成了Web服务客户端类(使用类似Axis库的东西)。 Web服务接口可能很少更改,因此您不希望在主应用程序构建中始终重复生成步骤。为此部分创建一个单独的项目,以便仅在WSDL更改时才需要重新创建Web服务客户端类。创建一个单独的jar并在主应用程序中使用它。这种风格还允许其他项目重用这些实用程序模块。
当遵循这种风格时,您应该在jar清单中放置一个版本号,以便您可以跟踪使用您模块的哪些应用程序正在使用哪些版本。根据您想要达到的程度,您还可以在jar中保留一个文本文件,详细说明每个修订版发生的更改(类似于开源库)。

0

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

我不确定您所说的“仅部署jar包中的某些软件包”是什么意思。

“仅部署jar包中的某些软件包”

我认为在运行时您需要它们全部,不是吗?据我所知,它们彼此依赖。


一些包可能依赖于其他一些包。假设我们有包A、B和C。A和C可能相关,B和C也可能相关。(在我看来,无论他们想要A还是B,我都会部署A、B和C) - Adam Lerman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接