Maven预先下载所有依赖项

时间:2016-03-11 16:14:17

标签: java maven

我需要将我们的maven build java项目发布给远程QA团队。为此,我想下载所有依赖项,并发送它们,以便它们不需要下载它们。

目前,所有依赖项都在pom.xml文件中定义,我们使用mvn install或mvn package来构建项目。一些项目成员使用超级罐,其他人使用jar +依赖项来执行。

预先打包相关jar文件的最简单方法是什么,这样才能从互联网上下载,并且不会过多地改变我们当前的构建过程?

3 个答案:

答案 0 :(得分:23)

一个可能的解决方案是清除您的本地存储库,告诉Maven下载项目的每个依赖项和插件依赖项并制作一个ZIP。

要清除本地存储库,只需删除文件夹{user.home}/.m2/repository即可。然后,您可以使用dependency:go-offline目标:

  

解决所有项目依赖项的目标,包括插件和报告及其依赖项。

mvn dependency:go-offline

这将下载您的项目所依赖的所有内容,并确保在以后的版本中不会下载任何内容。

然后,您只需制作{user.home}/.m2/repository的ZIP并将其发送给您的Q / A团队。他们需要在自己的{user.home}/.m2/repository内解压缩才能构建项目。

答案 1 :(得分:4)

离线包部署

您的要求可以通过创建具有完全依赖性的独立jar文件来完成。您可以在任何地方移植它,请参阅https://stackoverflow.com/a/35359756/5678086

  1. 按照答案
  2. 中的说明构建完整的依赖JAR文件
  3. 将JAR复制到您想要的目标计算机
  4. 从那里运行以下命令

    mvn install:install-file -Dfile=<path-to-file>
    
  5. 这将在目标计算机的maven存储库中安装dependecies。这是完全离线

答案 2 :(得分:0)

理论上,如果您知道将使用哪些 Maven 命令(打包、安装等),您可以清除 ~/.m2/repository 文件夹,在某人的开发箱上运行一次这些命令,然后分发存储库文件夹。您可以运行 maven -o install 等,让它不发出烦人的警告。这可能是比 go-offline 答案略小的发行版。