当第三方Java库作为单个JAR的集合提供时,将其集成到Maven项目中的最佳方式是什么?
我公司使用的其中一个第三方库以zip文件的形式提供给我们,其中包含数十个jar。该库每两周发布一个新版本,因此我正在寻找一种解决方案,它不需要每次发布新版本时都进行大量手动操作。我最近开始使用Maven进行依赖关系管理,我发现很难处理这个特定的第三方库。我应该当第三方Java库作为单个JAR的集合提供时,将其集成到Maven项目中的最佳方式是什么?,java,maven,jar,Java,Maven,Jar,我公司使用的其中一个第三方库以zip文件的形式提供给我们,其中包含数十个jar。该库每两周发布一个新版本,因此我正在寻找一种解决方案,它不需要每次发布新版本时都进行大量手动操作。我最近开始使用Maven进行依赖关系管理,我发现很难处理这个特定的第三方库。我应该 将每个jar添加到公司内部存储库中(例如,使用Nexus),然后将每个jar声明为使用此库的任何新项目的依赖项?这是一个艰苦的过程,我无法想象在每一个新版本中都会这样做 创建一个罐子来添加到我们的存储库?如果是,我如何创建它?Maven
您的第一个选择是最佳实践。我不知道为什么要费劲
备选方案:说服第三方设置maven存储库供其客户使用 这是可能的,但很复杂(但只有一次努力),而且可能是对maven的意图的误用:
在过去,我使用了artifactory并托管了自己的maven repo,然后编写了最烦人的jar/zip部署脚本。这样我就可以更新我的POM文件并将我的新jar上传到repo,一切都很好。因为第三方zip没有控制权,所以对于每个新版本,您需要验证哪些版本已经更改,以及是否添加了任何新jar。@6这正是我所关心的。我正在使用的第三方库有很多JAR,不能保证在以后的版本中会使用相同的版本。@jtahlborn您能给我一些详细信息吗?例如,步骤1:要将各种jar上传到Nexus,我需要一个组id、工件id和每个jar的版本(例如jetty8.3.jar、antlr3.4.0.jar等)。我是创建虚拟组ID等,还是尝试从名称中获取版本(不总是存在)?如果新版本的软件依赖于jetty9.0.jar,我是否不需要跟踪并更新pom?如果我遗漏了什么,很抱歉。@Thea-你关心jar的原始版本,还是zip是一个完整的“产品”版本?另外,这些其他罐子是原始罐子吗(即,你可以使用中央回购协议的普通jetty,还是罐子经过修改)?@jtahlborn拉链是一个完整的产品,所以我不关心具体的罐子。显然,有些JAR可能是从Maven Central下载的,但不能保证。对我来说,最简单的方法是将整个库作为一个工件,而不依赖于它。我知道这不是很像Maven,但这比每次有新的release时都要将每个jar上传到Nexus,或者只是跟踪每个版本中哪些jar发生了变化要容易得多。如果我决定将整个库作为一个工件上传,那么最好的方法是什么?如果没有,还有什么选择?