问题:您有一个压缩的Java项目发行版,该发行版依赖于多个库,例如spring-core,spring- context,jacskon,testng和slf4j。任务是使事物可离线构建。可以使用所有必需的库jar创建项目范围的本地存储库。
我已经尝试过了。看起来,即使项目中包含了javac和运行时所需的jar,该构建仍将需要Internet访问。Maven仍会潜入网络以获取其构建所需的大多数自己的插件。我假设Maven是使用空的.m2目录运行的(因为这可能是该构建的首次启动,可能是脱机构建)。不,我不能在项目本身上分发完整的Maven回购快照,因为这对我来说似乎是一团糟。
有点背景:更广泛的任务是创建随项目一起使用的Windows便携式JDK / IntelliJ Idea发行版,并允许在IDE中以最少的配置和最少的Internet访问进行最少的Java编码/运行。该项目针对计算机班的学生,对系统配置的控制很少或没有控制权。对于脱机模式,最好保持控制台构建系统完整无缺,但是我想maven过于依赖于网络,因此我不得不放弃它,转而使用好的老蚂蚁。
那么,您有什么看法,我们可以完全将第一个Maven构建完全移至离线模式吗?我的直觉是,最初的Maven发行版仅包含将基本插件从主存储库中拉出所需的最低限度,并且在没有至少看到主存储库一次的情况下无法完全发挥作用。
Maven有一个“ -o”开关,它允许您离线构建:
-o,--offline Work offline
当然,您将需要已经将依赖项缓存到您的库中$HOME/.m2/repository,以便构建此库而不会出错。您可以使用以下方式加载依赖项:
$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