代码之家  ›  专栏  ›  技术社区  ›  Erik

多个Java项目与重构

  •  4
  • Erik  · 技术社区  · 16 年前

    我最近加入了一个使用多个不同项目的项目。这些项目中的很多都是相互依赖的,使用库中包含的另一个项目的JAR文件,因此每当您更改一个项目时,您必须知道其他哪个项目使用它并更新它们。我想让这更容易,并考虑把所有的Java代码合并成一个单独的包中的项目。是否可以这样做,然后只在JAR中部署一些包?我不想只部署其中的一部分,如果可能的话,我已经被讽刺了。

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

    5 回复  |  直到 9 年前
        1
  •  4
  •   toolkit    16 年前

    方法1:使用哈德逊

    如果您使用像 Hudson ,然后可以配置上游/下游项目(请参见 Terminology )

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

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

    方法2:使用maven

    如果项目不太复杂,那么您可以创建一个主项目,并使这些子项目成为这个项目的子模块。然而,将一个项目管理成Maven喜欢的形式是相当棘手的。

        2
  •  3
  •   JeeBee    16 年前

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

    注意,如果一个项目依赖于另一个项目的某个版本,那么JAR文件是一种更简单的管理方法。一个主要的重构可以立即意味着在所有其他项目中都要做大量的工作来修复问题,而您可以根据需要将新的JAR放到每个项目中,然后执行迁移工作。

        3
  •  2
  •   nstehr    16 年前

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

        4
  •  1
  •   Bill.D    16 年前

    使用Ant作为构建工具,您可以以任何方式打包您的项目。但是,将代码的某些部分从发行版中删除似乎很容易出错;您可能意外地遗漏了必要的类(可能所有类都是必需的)。

    关于将代码保存在不同的项目中,我有一个松散的指导原则。在同一个项目中保留一起更改的代码,并将其打包到自己的JAR文件中。当您的一些代码可以分解成比主应用程序更改频率更低的实用程序库时,这种方法最有效。

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

    当遵循这种风格时,您应该在JAR清单中放置一个版本号,这样您就可以跟踪哪些应用程序正在使用哪个版本的模块。根据您希望达到的程度,您还可以在JAR中保留一个文本文件,详细说明每个修订版所发生的更改(很像一个开放源代码库)。

        5
  •  0
  •   Kai Huppmann    16 年前

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

    我不知道你说的是什么意思

    “只部署JAR中的一些包”

    我想你在运行时需要所有的,是吗?据我所知,他们互相依赖。

    推荐文章