当前位置:  开发笔记 > 编程语言 > 正文

没有Maven为我创建的依赖项的jar的用途是什么?

如何解决《没有Maven为我创建的依赖项的jar的用途是什么?》经验,为你挑选了1个好方法。

我正在使用Maven和我的配置(很可能是默认配置)产生这个:

图片描述

这意味着我的编译代码是文件的4%.最大的通货膨胀是由GitHub API库引起的 - 我强烈考虑我会放弃它.

但我的问题是关于小文件,而不是大文件.Maven创造它是有原因的吗?我可以以某种方式分发它并让它在客户的计算机上工作吗?它为什么存在,可以用做些什么



1> Tunaki..:

鉴于您的问题,您的Maven项目很可能是一个jar使用maven-assembly-plugin生成超级jar的项目.在您的输出中,有2个不同的文件是2个完全不同的过程的结果.


autoclient-3.0.jar这就是所谓的主要神器.这是Maven构建的主要结果.它是由单独的项目,打包成一个编译的类的jar通过maven-jar-plugin.您有这个文件,因为您的项目有jar包装.在Maven中,jar打包自动绑定目标以构建默认生命周期的阶段:其中,它包括jar:jar目标的调用,从而创建此主JAR.但你必须意识到这个JAR只包含你的类.如果您尝试运行代码,它可能会失败,因为依赖项不会存在.如果你不能运行它的目的是什么?好吧,它的目的是作为其他项目的库,而不是可执行代码.

例如,您需要创建一个实用程序库:此库不是直接运行的,它可以用作另一个可执行项目的依赖项.通过传递依赖的概念,Maven将自动在其他项目的构建路径中包含您的库及其所有传递依赖项.因此,您的库不需要直接嵌入其依赖项:它们将在构建其他项目期间正确解析.


autoclient-3.0-jar-with-dependencies.jar这就是所谓的额外工件.jar-with-dependencies是一个分类器,用于区分此工件与主工件.它是maven-assembly-plugin使用预定义jar-with-dependencies描述符文件执行的结果.这神器由你的项目的已编译类项目的所有直接和传递依赖.一个超级jar(或胖罐)就是这样:它将所有依赖项和你的代码聚合在一个大罐子里面.优点是您不需要单独分发依赖项,它们已经包含在JAR中.但请注意,其目的不是作为库,而是用作可执行代码.

请注意,对于单个项目,保留两个JAR是有意义的:一个用作库(主JAR),另一个用作可运行的JAR.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有