Answers:
您可以在脱机模式下运行maven mvn -o install
。当然,本地存储库中不可用的任何工件都会失败。Maven并非基于分布式存储库,但是它们肯定会使事情变得更加无缝。因此,许多商店使用内部镜像,这些镜像与中央存储库逐渐同步。
另外,在mvn dependency:go-offline
开始脱机工作之前,可以使用来确保已在本地安装所有依赖项。
如果您的局域网中有一台可访问Internet的PC,则应安装本地Maven存储库。
我推荐Artifactory Open Source。这是我们在组织中使用的,设置起来非常容易。
Artifactory充当构建工具(Maven,Ant,Ivy,Gradle等)与外界之间的代理。
它缓存了远程工件,因此您不必一遍又一遍地下载它们。
它阻止对内部工件的不需要的(有时是对安全敏感的)外部请求,并控制工件的部署方式和位置以及由谁部署。
设置Artifactory之后,您只需要settings.xml
在开发机器中更改Maven :
<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<mirrors>
<mirror>
<mirrorOf>*</mirrorOf>
<name>repo</name>
<url>http://maven.yourorganization.com:8081/artifactory/repo</url>
<id>repo</id>
</mirror>
</mirrors>
<profiles>
<profile>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>libs-release</name>
<url>http://maven.yourorganization.com:8081/artifactory/libs-release</url>
</repository>
<repository>
<snapshots />
<id>snapshots</id>
<name>libs-snapshot</name>
<url>http://maven.yourorganization.com:8081/artifactory/libs-snapshot</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>plugins-release</name>
<url>http://maven.yourorganization.com:8081/artifactory/plugins-release</url>
</pluginRepository>
<pluginRepository>
<snapshots />
<id>snapshots</id>
<name>plugins-snapshot</name>
<url>http://maven.yourorganization.com:8081/artifactory/plugins-snapshot</url>
</pluginRepository>
</pluginRepositories>
<id>artifactory</id>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artifactory</activeProfile>
</activeProfiles>
</settings>
之所以使用此解决方案,是因为我们的开发机器无法访问Internet,并且某些工件下载了损坏的文件或根本没有下载。从那以后我们再也没有遇到过问题。
为此,您有两个选择:
1.)更改settings.xml,在第一个标记中添加
<localRepository>C:/Users/admin/.m2/repository</localRepository>
2.)使用-o标记进行离线命令。
mvn -o clean install -DskipTests=true
mvn -o jetty:run
Maven需要本地存储库中的依赖项。获得它们的最简单方法是通过互联网访问(或使用此处提供的其他解决方案更困难)。
因此,假设您可以暂时访问Internet,则可以使用具有其dependency:go-offline目标的maven-dependency-plugin准备脱机。这会将所有项目依赖项下载到本地存储库中(当然,对依赖项/插件的更改将需要新的Internet /中央存储库访问权限)。
脱机之前,必须确保所有内容都在本地存储库中,这是脱机工作时必需的。为您打算进行的项目/ pom运行“ mvn依赖项:脱机”将减少实现此目标的工作量。
但这通常不是全部,因为dependency:go-offline只会下载“裸露的构建”插件(go-offline / resolve-plugins不能解决所有插件的依赖关系)。因此,您必须找到一种方法来将部署/测试/站点插件(可能还有其他)及其依赖项下载到您的存储库中。
此外,dependency:go-offline不会下载pom的工件本身,因此您必须依赖于:如果需要,请复制它。
有时-正如MaDa所写-有时您不知道脱机时需要什么,这使得拥有“足够的”回购通知几乎是不可能的。
无论如何,只要仓库已正确填充,您只需在Maven的settings.xml中添加“ <offline> true </ offline>”即可脱机。
离线时,请勿更改用于填充仓库的Maven配置文件(id)。Maven使用绑定到配置文件ID的“身份”识别元数据中下载的工件。
如果您使用的是IntelliJ,则只需转到“偏好设置” ->“ 构建,执行,部署” ->“ 构建工具” ->“ Maven”,然后选中/取消选中“脱机工作”。
这对您有用吗?
http://jojovedder.blogspot.com/2009/04/running-maven-offline-using-local.html
不要忘记将其添加到插件存储库中,并将URL指向存储库所在的位置。
<repositories>
<repository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</pluginRepository>
</pluginRepositories>
如果没有,您可能需要在计算机上运行本地服务器,例如apache。
(来源:jfrog.com)
要么
只需使用Maven存储库服务器,例如Sonatype Nexus http://www.sonatype.org/nexus/或JFrog Artifactory https://www.jfrog.com/artifactory/即可。
一个开发人员构建项目后,下一个开发人员或Jenkins CI进行构建将不需要Internet访问。
Maven存储库服务器还可以将代理配置为访问Maven Central(或更多需要的公共存储库),并且它们可以在远程存储库中添加加密的工件清单。
直接回答您的问题:它不需要Internet连接,但可以访问LAN或本地磁盘上的存储库(请使用此处发布的其他人的提示)。
如果您的项目还不处于成熟阶段,则意味着当POM经常更改时,离线模式将非常不切实际,因为您也必须经常更新存储库。除非您可以获得拥有所需内容的存储库副本,否则您将如何知道?通常,您从头开始创建存储库,并且在开发过程中(在连接到另一个存储库的计算机上)逐渐克隆该存储库。repo1.maven.org公共存储库的副本重达数百GB,因此,我也不建议使用暴力破解。
一个新的插件似乎可以解决以下缺点 mvn dependency:go-offline
:
https://github.com/qaware/go-offline-maven-plugin
将其添加到pom中,然后运行mvn -T1C de.qaware.maven:go-offline-maven-plugin:resolve-dependencies
。一旦设置了所有动态依赖项,maven将不再尝试再次下载任何内容(直到您更新版本)。