我会给你另一个观点来看这个问题,因为我不认为这个问题与Lucene本身有关,但是你可以在应用程序之间共享任何通用的代码。
我会分别版本每个应用程序,因为他们似乎有一个不同的生命周期,导致您的问题。另外,我会在一个单独的jar文件(例如Lucene和其他一些常用类)中对通用代码进行版本化,因此每次需要为特定应用程序更改时都可以修改和发布新版本。
例如,假设在一开始应用的所有版本消耗的通用代码相同的版本(考虑名字的最后一部分的版本):
first-app-1.0
消耗lucene-something-1.0
second-app-1.0
消耗lucene-something-1.0
third-app-1.0
消耗lucene-something-1.0
fourth-app-1.0
消耗lucene-something-1.0
现在假设我需要修改lucene-something-1.0
以便为third-app-1.0
提供新功能。我将释放lucene-something-1.1
,并将其用于third-app-1.1
(新版本)离开模块之间的依赖关系,因为这:
first-app-1.0
消耗lucene-something-1.0
(不变)
second-app-1.0
消耗lucene-something-1.0
(不变)
third-app-1.1
消耗lucene-something-1.1
fourth-app-1.0
消耗lucene-something-1.0
(不变)
正如你所看到的,其他应用程序将继续工作,因为我没有改变它们。您拥有third-app
的新功能,并且在lucene-something
的代码库中具有“基准”,该基准现在包含适用于其他应用程序的未来版本的很好功能。
最后,我会在构建工具的帮助下执行所有这些操作,例如Maven。