如何在另一台计算机上安装.jar依赖项?

时间:2018-03-28 00:46:44

标签: java maven

我有一个使用Netbeans和maven构建的项目,需要一些外部包,因此它们列在pom.xml的dependencies部分中。当我构建jar时,它会下载所有依赖项,并且它在我的计算机上运行正常。如果我将jar传输到另一台计算机并运行它,它会崩溃,因为它找不到它无法找到的类(在这种情况下是org / apache / commons / codec / digest / DigestUtils)。我想出了如何打包jar文件中的所有依赖项,但该文件是100MB而不是40KB。分发java程序时,这里的一般过程是什么?我是否只包含所有依赖项并分发大文件,还是有办法在新计算机上自动下载所需的依赖项?我更喜欢较小文件的一个原因是它必须在服务器上运行,因此对于测试,如果文件大小较小,它可以更快地将新版本推送到服务器,并且它可以在系统的其他地方找到依赖项。

2 个答案:

答案 0 :(得分:1)

您可以使用appassembler插件创建一个包含您的应用程序及其所有依赖项的zip或tar文件,以及一个用它来调用Java的命令行shell脚本。

答案 1 :(得分:0)

你的问题有两个问题。因此,回答第一个问题,正如您所建议的那样,您可以将依赖项捆绑在jar中,并使用jar来提取依赖项并使用java代码。为了对抗大型依赖性jar,您可以使用ProGuard。它是一个很酷的工具,允许你缩小依赖jar,通常用于android(尝试使用他们的混淆器)。

“有没有办法在新计算机上自动下载所需的依赖项?”

是的,使用终端(或cmd提示符)转到pom文件所在的文件夹并输入:

    mvn clean compile

这会将所有依赖项下载到.m2文件夹中。然后,您可以在另一台计算机上使用maven来运行程序或将该文件夹作为参数传递给java。但是,重新修复文件夹结构可能会很痛苦。要使用maven:

   mvn exec:java -Dexec.mainClass="<your class path>" -Dexec.args="<Args here>" 

您不需要指定依赖项的位置,因为Maven会在pom.xml文件中为您处理这些依赖项。