Java 预下载所有依赖项

Java 预下载所有依赖项,java,maven,Java,Maven,我需要将我们的Maven build Java项目发布给远程QA团队。为此,我想下载所有的依赖项,并发送它们,使他们不需要下载它们 目前,所有依赖项都是在pom.xml文件中定义的,我们使用mvn安装或mvn包来构建项目。一些项目成员使用uber JAR,其他成员使用JAR+依赖项执行 预打包依赖jar文件的最简单方法是什么,这样就不会从internet下载,也不会太多地更改当前的构建过程?一个可能的解决方案是清除本地存储库,告诉Maven下载项目的每个依赖项和插件依赖项,并将其压缩 要清除本地

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

目前,所有依赖项都是在
pom.xml
文件中定义的,我们使用
mvn安装
mvn包
来构建项目。一些项目成员使用uber JAR,其他成员使用JAR+依赖项执行


预打包依赖jar文件的最简单方法是什么,这样就不会从internet下载,也不会太多地更改当前的构建过程?

一个可能的解决方案是清除本地存储库,告诉Maven下载项目的每个依赖项和插件依赖项,并将其压缩

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

解决所有项目依赖关系的目标,包括插件和报表及其依赖关系

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

然后,您只需制作一个
{user.home}/.m2/repository
的邮政编码,并将其发送给Q/a团队。他们需要在自己的
{user.home}/.m2/存储库中解压它,才能构建项目。

脱机包部署 您的需求可以通过创建具有完全依赖关系的独立jar文件来实现。你可以把它移植到任何地方,请参考

  • 构建一个完整的依赖项JAR文件,如回答中所述
  • 将JAR复制到所需的目标计算机
  • 从那里运行下面的命令

    mvn install:install-file -Dfile=<path-to-file>
    
    mvn安装:安装文件-Dfile=
    

  • 这将在目标机器的maven存储库中安装依赖项。这是完全脱机的

    理论上,如果您知道将使用哪些maven命令(打包、安装等),您可以清除
    ~/.m2/存储库
    文件夹,在某人的开发设备上运行这些命令一次,然后分发存储库文件夹。您可以运行
    maven-o安装
    等,使其不会发出恼人的警告。这可能比
    离线
    答案的发行版小一些。

    在您的网络中创建一个本地maven存储库,如artifactory。这样,依赖项就会缓存在本地网络中。您能详细解释一下这个过程吗?如何打包本地maven存储库并将其发送给远程团队?不,本地网络中的存储库只会阻止每个团队成员从internet下载所有依赖项。相反,它们将被缓存在存储库中,并可以从那里下载。现在我不明白你为什么要给他们发送依赖项。maven dependencies的全部目的是您不必打包和发送它们,相反,您只需要在pom.xml中引用它们。或者,您可以使用
    mvn dependency离线:离线
    ,并对本地回购进行压缩。您的构建系统效率低下。您应该生成一个单一版本的人工制品(可能有许多文件),并在不同环境之间进行升级。现在你真的不知道测试人员测试了与你构建的相同的东西——任何东西都可能在那些POM或依赖项中。我假设对于Q/A团队来说,第一步是解压缩依赖项jar文件并将其复制到他们自己的~/.m2/存储库文件夹中,然后进行mvn安装/打包。我说得对吗?@tsar2512说得对。在这之后如何恢复正常下载?这看起来像是下载。。。“编译”和“测试”普通目标FWIW不需要很多东西…所有插件等等。。。
    
    mvn install:install-file -Dfile=<path-to-file>