以离线模式访问本地存储库

Eug*_*ene 2 maven-3 maven

在脱机模式下运行时,我需要使Maven访问本地存储库(file://)(基本上,我正在尝试设置存储库层次结构,因此不会将工件放在不需要的地方)。

尽管我一直认为支持此方案,但这种方法不能立即使用。是否有一些标志可以在脱机模式下启用特定存储库?

Ale*_*tet 6

仅对于开发环境,如果使用IntelliJ IDEA,则可以将Maven配置为脱机工作,如下所示:

Preferences... > Search for Maven > Work offline (checked)
Run Code Online (Sandbox Code Playgroud)

  • 我的问题是相反的,它使用离线配置来修复依赖项,但无法获取任何 Maven 存储库。取消选中然后再次检查即可修复它。 (2认同)

ing*_*ere 1

可以使用本地文件系统而不是网络地址为存储库设置配置文件。

<repository>
   <id>mymaven</id>
   <url>file://D:\mylocalrepo</url>
</repository>
Run Code Online (Sandbox Code Playgroud)

根据文档,还可以在属性值中引用离线模式

${settings.offline}
Run Code Online (Sandbox Code Playgroud)

然后,您可以根据此处的示例利用它们来激活给定的设置配置文件。(如果 Maven 未检测到该属性,请尝试使用上述语法直接评估它。)

  <profiles>
    <profile>
      <id>myNeededProfile</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        ...
        <property>
          <name>offline</name>
          <value>true</value>
        </property>
        ...
      </activation>
      ...
    </profile>
  </profiles>
Run Code Online (Sandbox Code Playgroud)

我相信Maven 帮助插件可以通过计算在某些条件下哪个配置文件将处于活动状态来指导此开发。

我还认为,通过每次请求离线模式时从命令行显式调用配置文件,可以更简单地完成此任务。

mvn groupId:artifactId:goal -o -P profile-1,profile-2
Run Code Online (Sandbox Code Playgroud)

或者,更直接地,通过拥有两个单独的设置文件并将它们专门用于离线/在线操作。您可以在用于检测脱机请求的任何操作系统环境中编写命令行包装器,然后在执行 Maven 命令之前移动并重命名文件,然后在完成后将它们移回。