我最近加入了一个使用多个不同项目的项目。很多这些项目依赖于彼此,使用库中包含的其他项目的JAR文件,因此每当您更改一个项目时,您必须知道哪个其他项目使用它并更新它们。我想让这更容易,并考虑将所有这些java代码合并到一个单独的包中的项目中。是否可以这样做,然后只在jar中部署一些包。我不想只部署它的一部分,但是如果可能的话,我已经开始了。
有没有更好的方法来解决这个问题?
答案 0 :(得分:4)
如果您使用Hudson之类的持续集成服务器,则可以配置上游/下游项目(请参阅Terminology)。
项目可以有一个或多个下游项目。如果成功构建当前项目,则将下游项目添加到构建队列。可以设置它应该将下游项目添加到调用队列,即使当前项目不稳定(默认为关闭)。
这意味着,如果有人将某些代码签入一个项目,至少如果它破坏了其他版本,你会得到预警。
如果项目不是太复杂,那么也许您可以创建一个主项目,并使这些子项目成为该项目的子模块。然而,将一个项目变成一个Maven喜欢的形式可能会非常棘手。
答案 1 :(得分:3)
如果您使用Eclipse(或任何体面的IDE),您只需使一个项目依赖另一个项目,并在SVN中提供该配置方面,并假设您的构建脚本中有签出。
请注意,如果一个项目依赖于另一个项目的某个版本,那么Jar文件是一种更简单的方法来管理它。一个主要的重构可能会立即意味着在所有其他项目中进行大量工作来解决问题,而您可以根据需要将新jar放入每个项目中,然后进行迁移工作。
答案 2 :(得分:2)
我想这可能全部取决于具体项目,但我想我会将所有项目分开。这有助于保持整个系统松散耦合。您可以使用maven之类的工具来帮助管理项目之间的所有依赖关系。像这样管理依赖关系是maven的主要优势之一。
答案 3 :(得分:1)
使用Ant作为构建工具,您可以以任何方式打包项目。但是,将部分代码留在分发之外似乎容易出错;你可能会意外地遗漏必要的课程(可能你的所有课程都是必要的)。
关于将代码保存在不同的项目中,我有一个宽松的准则。保持在同一项目中一起更改的代码,并将其打包在自己的jar文件中。当您的一些代码可以分解为比主应用程序更改频率更低的实用程序库时,这种方法效果最佳。
例如,您可能有一个应用程序,您从Web服务WSDL生成Web服务客户端类(使用类似Axis库的东西)。 Web服务接口很可能不经常更改,因此您不希望在主应用程序构建中始终重新生成重新生成步骤。为此部分创建单独的项目,以便您只需在WSDL更改时重新创建Web服务客户端类。创建一个单独的jar并在主应用程序中使用它。此样式还允许其他项目重用这些实用程序模块。
遵循此样式时,您应在jar清单中放置一个版本号,以便跟踪哪些应用程序正在使用哪个版本的模块。根据您想要采取的措施,您还可以在jar中保留一个文本文件,其中详细说明了每个修订版本所发生的更改(非常类似于开源库)。
答案 4 :(得分:0)
一切皆有可能(几年前我们也有同样的情况)。它的难易程度取决于您的IDE(重构,合并,组织新项目)和构建工具(部署)。我们使用IDEA作为IDE和Ant作为构建工具,它并不太难。一个星期天(没人工作+承诺),一台电脑上有2个人。
我不确定你的意思
“只在jar中部署一些软件包”
我认为你在运行时需要所有这些,不是吗?据我所知,他们互相依赖。