有史以来第一个maven构建是否可以脱机?

问题:你有一个压缩的java项目分布,它取决于几个库,如spring-core,spring-context,jacskon,testng和slf4j。 任务是使事物可以脱机构建。 可以使用所有必需的库jar创建项目范围的本地存储库。

我试过这样做。 看起来即使项目包含javac和运行时所需的jar,构建仍然需要Internet访问。 Maven仍然会潜入网络以获取构建所需的大部分自己的插件。 我假设maven使用空的.m2目录运行(因为这可能是构建的第一次启动,可能是脱机构建)。 不,我不喜欢在项目本身分发完整的maven repo快照,因为这看起来像是一个彻头彻尾的混乱。

有点背景:更广泛的任务是创建Windows便携式JDK / IntelliJ Idea分布,它沿着项目进行,允许在IDE内部进行一些最小的Java编码/运行,只需最少的配置和最少的Internet访问。 该项目面向计算机课程的学生,很少或根本无法控制系统配置。 最好保持控制台构建系统在离线模式下完好无损,但我想maven过分依赖于网络,所以我不得不放弃它而选择好老ant。

那么,您的意见是什么,我们可以完全在离线模式下移动第一个maven构建吗? 我的直觉是,初始maven分布只包含从主回购中拉出必要插件所需的最低限度,并且如果没有看到主回购至少一次就不能完全正常运行。

Maven有一个’-o’开关,允许你离线构建:

-o,--offline Work offline 

当然,您需要将您的依赖项缓存到$HOME/.m2/repository ,以便构建时没有错误。 您可以使用以下命令加载依赖项:

 mvn dependency:go-offline 

我试过这个过程,似乎没有完全奏效。 我做了一个:

 rm -rf $HOME/.m2/repository mvn dependency:go-offline # lot of stuff downloaded # unplugged my network # develop stuff mvn install # errors from missing plugins 

然而,有效的是:

 rm -rf $HOME/.m2/repository mvn install # while still online # unplugged my network # develop stuff mvn install 

您可以运行maven 依赖:在相关项目的全新.m2回购中离线 。 这应该下载maven需要能够脱机运行的所有内容。 如果这些被放入项目范围的本地仓库,您应该能够实现您想要的。 我没试过这个

使用...settings.xml文件中指定本地存储库位置 ,或者使用-Dmaven.repo.local=...参数运行mvn 。 在初始项目构建之后,所有必需的工件都应该在本地缓存,并且您可以以相同的方式引用此存储库位置,同时在脱机模式下运行其他Maven构建( mvn -o ... )。