在我的多模块Maven项目中,假设我有两个模块car
和horse
。它们都依赖于JAR文件transport.jar
,这是一个在任何在线Maven存储库中都不可用的文件。因此,我需要找到一种方法来使这些模块依赖于在项目文件夹结构中找到的文件。
据我所知,默认的Maven解决方案是在本地存储库中手动注册JAR文件。虽然这可以在开发机器上运行,但它会在构建服务器上中断,它会在每次构建之前清除其本地存储库。
我一直在网上搜索如何开启和关闭一段时间并发现一些有用的东西,但没有任何完全有效。
例如,常见的答案是使用<scope>system</scope>
向文件添加依赖项。但是,不仅其他人声称这样做非常糟糕,它也无法在构建服务器上运行。 (另一方面,我还想指出,使用JAR的绝对路径也是不可能的,因为它再次构建在几台不同的机器上。)
我发现一个更有用的方法是在POM文件中定义一个本地存储库,指向路径file:${project.basedir}/lib
。 (Such as in this article)不幸的是,如果我将JAR和存储库定义放在car
POM中,我无法在horse
中成功地向JAR添加依赖关系。我在car
中对horse
进行了额外的引用,并在horse
中定义了第二个存储库,指向file:${project.basedir}/../car/lib
。如果我尝试创建第三个模块transport-lib
,专门用于包装JAR依赖项,这个问题也会存在。
我很可能将JAR文件添加到两个模块并定义两个单独的模块本地存储库,但我真的不想,除非我必须保持两个(经常更新的)JAR同步等
所以,我的问题如下:根据提到的参数和限制,有人可以给我一个确认工作方法,让两个模块依赖项目内的同一个JAR文件吗?
答案 0 :(得分:2)
最佳解决方案是使用repository manager like Archiva, Artifactory or Nexus并将该工件安装到存储库管理器中。之后,您可以直接在您的pom文件中使用此工件,而不会出现任何问题。
请勿使用示波器系统,因为在发布其他等后会导致其他问题。