Maven:有依赖项的 Jar VS 无依赖项的 jar

Rui*_*Rui 2 jar maven jar-with-dependencies

我目前正在从事一个Java项目,我们使用maven来构建最终的jar。众所周知,有两种构建 jar 的方法,即一种带有依赖项的单个 jar 和一种不带依赖项的 jar。在后一种情况下,我们还需要将依赖 jar 添加到类路径中。

原则上两者都可以工作,我个人更喜欢一个带有依赖项的 jar,但在项目团队成员中决定使用单独的没有依赖项的 jar。所以我想知道哪种选择更好?

wat*_*ery 6

这个问题没有答案,因为这取决于您需要做什么。

如果您正在编写一个实用程序包或组件,它可能是另一个项目的依赖项,那么将所有依赖项都包含在其中是没有意义的 - 最好将依赖项解析留给依赖项管理器(例如 Maven)。

相反,如果您正在编写打包为 jar 的完整应用程序,我的意思是MainClass可以使用 执行的东西java -jar myjar,那么将依赖项放在一起将使分发更容易。

考虑一下,例如,如果您正在编写一个 Web 应用程序,它将被打包为 WAR,它通常带有依赖项。