Java Maven组库

Java Maven组库,java,maven,project-management,Java,Maven,Project Management,我有一个web应用程序,有数千个类,打包在几百个jar中,放在几个文件夹中 我想在本地maven存储库中创建一个库,包含来自这些JAR的所有类。 我可以在我所有的项目中使用这种依赖性 就像IntelliJ的想法一样,我创建了一个全局库。选择包含多组JAR和子文件夹的文件夹,并设置名称“My web app libs”。然后我在我的项目中添加这个全局库 我已经为几个库建立了一个构建组的方法,如下所述。但我有一百个jar文件,每个文件都有一个新项目 提前谢谢 看看 该插件提供了将工件打包到uber

我有一个web应用程序,有数千个类,打包在几百个jar中,放在几个文件夹中

我想在本地maven存储库中创建一个库,包含来自这些JAR的所有类。 我可以在我所有的项目中使用这种依赖性

就像IntelliJ的想法一样,我创建了一个全局库。选择包含多组JAR和子文件夹的文件夹,并设置名称“My web app libs”。然后我在我的项目中添加这个全局库

我已经为几个库建立了一个构建组的方法,如下所述。但我有一百个jar文件,每个文件都有一个新项目

提前谢谢

看看

该插件提供了将工件打包到uber jar中的功能


您可能希望创建另一个项目,将所有工件登记为依赖项。因此,当您将其包含到项目中时,所有需要的100个依赖项都将通过传递方式得到解决

Maven版本插件可以帮助您批量更新这个新工件中的许多版本

更新

如果你的300多个罐子都是完全静态的,也就是说,它们的版本是固定的,那么你可能需要用shade插件重新打包它们。否则,从这个庞大的集合中更新一个JAR版本可能会是一个麻烦。。。我无法预测性能,但我猜普通的Maven方法更有效

关于Maven shade插件的注意事项:您可能需要将着色库移动到着色包中。这是他们通常用来避免库版本冲突的方法。也就是说,如果您的300多个LIB使用
spring-2.0
,而您当前的项目使用
spring-3.1.0
,那么这两个LIB都将被包括在内。因此,为了避免冲突,建议将此插件配置为将
spring-2.0
包移动到不同的包下

更新2


如果你的罐子没有被Maven化,Maven在这里就帮不了大忙。您可能应该手动合并jar并检查它是否适合您:。

是否要将所有库打包到一个库中?是的,但首先我需要将所有300+jar导入到存储库,对吗?看起来很愚蠢。只是澄清一下-当你新创建的依赖关系解决后,你的300+将自动复制到你的本地回购中。伙计们,感谢回答,但我仍然不明白如何使用这个插件。对于创建uber jar,我需要包括我想要重新打包到此jar的所有依赖项。但我的回购协议中没有,它只是一个文件。。。我需要避免将它们安装到存储库中。也许我的英语太差了,或者我不明白这个插件如何帮助我。如果这些jar不是Maven工件,如果这些只是300个.jar文件,那么这是一个完全不同的难题。Maven不会在这里帮你创建uber jar。您可能应该手动合并JAR,并检查它是否适合您,或者继续使用您目前的JAR。。。无论如何,您可以尝试以以下方式将jar安装到本地repo:。更新了答案-您最好的选择可能是手动合并jar:。这样,我可以将所有类重新打包到我的一个新jar中,是吗?但我需要包括所有300+罐之前?我读了插件FAQ,但不明白它如何能帮助我。。。您能解释一下如何避免为每个现有的jar添加依赖项吗?这个JAR不在存储库中,它们只是在我的硬盘上的文件夹中。