如何在不同项目之间共享公共代码?

时间:2014-05-28 13:42:31

标签: java eclipse maven dependency-management

我希望有两个不同的项目:一个连接到Web服务,另一个项目处理导入。

两个项目都将针对相同的最终应用程序运行,但应分别在不同的服务器上运行。此外,每个项目都应该能够独立发布(例如,如果我修复了导入程序的错误,我必须在不参考webservice项目的情况下发布它)。

项目应该共享一些代码,例如域类。我应该为此目的使用哪种maven结构? 3个独立项目,而commons安装到本地maven仓库并被其他人用作dependency

或者是否有可能直接从eclipse工作区解析commons项目而无需安装它?

svn/Webservice/pom.xml
svn/Cache-Importer/pom.xml
svn/Commons/pom.xml //used by both projects and contains eg shared domain code

1 个答案:

答案 0 :(得分:2)

正如您猜测的那样,我会建议三个独立的项目模型。 Webservice和Cache-Importer项目将取决于Commons。将它们作为单独的项目允许您为这些项目提供不同的生命周期,您可以释放一个,但不能释放另一个。

如果你想把它们放在同一个聚合器中,这会让你把它们全部放在相同的版本下,而且有些模块当时可能不需要版本。因此,在我看来,这将是一种更好的方法。

如果您想要将它们组合在一起,但又想将它们作为独立模块,您可以创建第四个项目,在<modules/>中将它们定义为pom.xml。您需要设置svn:externals(如here所述)并基本上将模块的路径链接到此项目。通过这种方式,您可以完全检查它们并构建它们,同时您也可以独立发布它们。