使用Maven依赖项的轻量级方法?

亚瑟科

当您想使用某些Java库中的某个实用程序时,通常会做什么?我的意思是,如果将其添加为Maven依赖项,整个库是否包含在已组装的JAR中?

我没有任何类型的存储问题,也不介意JAR变得but肿,但我很好奇在这种情况下是否有降低JAR大小的策略。

谢谢

J Fabian Meier

更糟糕的是:您不仅将“整个库”添加到项目中,而且还添加了其依赖项,无论是否需要它们。

Joachim Sauer说的很对,除非您不希望将依赖项运行,否则不要将依赖项捆绑到您的工件中。但是恕我直言,这只会将问题转移到另一个地方。最终,您想运行这些东西。在某个时候,将构建可运行的JAR,WAR或EAR,并且它将合并整个依赖关系树(减去每个工件只有一个版本的事实)。

Maven阴影插件可以通过仅添加“必需”类来帮助您最小化jar(请参阅使用Shade-Plugin正确最小化Uber Jar)。但这通常是棘手的:

  • 找不到非Java元素引用的类。
  • 找不到反射使用的类。
  • 如果正在进行某种依赖注入,则仅在代码中使用接口。因此实施可能会被淘汰。

因此,您的MinimalJar通常可能太小。

如您所见,我不知道任何通用的解决方案。

什么是明智的方法?

  • 不要构建具有五个目的的JAR,而要构建较小的JAR。为避免大量不同的构建过程,请使用多模块项目。
  • 除非确实需要,否则不要将库添加为依赖项更好地复制一种方法来转换字符串,而不是仅为此目的添加整个字符串库。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章