如何配置 Maven 以进行脱机开发?

2022-08-31 08:38:40

maven是否需要在某个时候连接到互联网才能使用它?意思是专门获取内部maven插件以进行编译,清洁,打包等?


答案 1

您可以在离线模式下运行 maven。当然,任何在本地存储库中不可用的工件都将失败。Maven并不依赖于分布式存储库,但它们肯定会使事情更加无缝。正是出于这个原因,许多商店使用与中央存储库增量同步的内部镜像。mvn -o install

此外,还可用于确保在开始脱机工作之前已在本地安装了所有依赖项。mvn dependency:go-offline


答案 2

如果您的 LAN 中有一台可访问互联网的 PC,则应安装本地 Maven 存储库。

我推荐 Artifactory Open Source。这是我们在组织中使用的,它真的很容易设置。

Artifactory充当您的构建工具(Maven,Ant,Ivy,Gradle等)与外部世界之间的代理。

它缓存远程工件,因此您不必一遍又一遍地下载它们。

它阻止对内部工件的不需要的(有时是安全敏感的)外部请求,并控制工件的部署方式和位置以及部署对象。

设置 Artifactory 后,您只需要在开发计算机中更改 Maven:settings.xml

<?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 访问问题,并且某些工件下载了损坏的文件或根本没有下载。从那以后,我们再也没有遇到过问题。