2012-03-06 97 views
0

当离线模式下运行Maven时,我需要使Maven访问本地存储库(file://)(基本上,我试图设置存储库层次结构,因此它不会将工件放在不存在的位置,吨需要他们)。以离线模式访问本地存储库

这并不是开箱即用的,尽管我总是认为这种情况是受支持的。是否有一些标志在离线模式下启用特定的存储库?

回答

1

有可能到set up profiles for repositories utilizing the local file system而不是网络地址。

<repository> 
    <id>mymaven</id> 
    <url>file://D:\mylocalrepo</url> 
</repository> 

根据文件,也有可能reference offline mode in a property value

${settings.offline} 

你会再根据实例here一起利用这些来activate a given settings profile。 (如果Maven的不检测的性质,尝试直接使用上述语法评估。)

<profiles> 
    <profile> 
     <id>myNeededProfile</id> 
     <activation> 
     <activeByDefault>false</activeByDefault> 
     ... 
     <property> 
      <name>offline</name> 
      <value>true</value> 
     </property> 
     ... 
     </activation> 
     ... 
    </profile> 
    </profiles> 

我相信Maven Help Plugin可以引导通过计算这方面的发展,其个人资料将在一定条件下的活性。

我也认为这可以通过每次请求离线模式时从命令行显式调用配置文件来实现。

mvn groupId:artifactId:goal -o -P profile-1,profile-2 

或者,甚至更简单地说,有两个单独的设置文件并专门用于离线/在线操作。你可以在你用来检测脱机请求的任何操作系统环境中编写一个命令行包装器,然后在执行Maven命令之前移动和重命名这些文件,然后在完成时移回它们。

+0

不,这不是我想要的。我需要一种方式来在离线模式下运行Maven(我需要它强制Tycho插件更喜欢本地P2回购)并且仍然具有回购层次(因此某些回购是r/o) – Eugene 2012-03-06 21:48:20

1

Maven总是试图连接到中央存储库。您可以定义自己的中心(这是唯一的财产,你可以重新定义)

使快照一样,插件库等配置,可以作为配置文件中使用 - 这将是可选的。请参阅ingyhere的答案。

+0

我的问题是,当Maven离线时,第谷将忽略我的本地P2存储库,并将开始从网络获取工件。因此,即使我重写中央,我也无法使用在线模式。 – Eugene 2012-03-06 21:47:16

+0

您是否尝试过重新定义父项目POM和Maven主设置中的存储库引用?另外,请在原始问题中参考更多细节。这是项目问题,由于某些原因Maven设置被覆盖,或者项目设计不适应离线模式。需要接近具体的解决方案而不是普通解决方案。 – ingyhere 2012-03-07 00:02:24

1

对于开发环境而已,如果你使用IntelliJ IDEA的,你可以配置Maven来如下脱机工作:

Preferences... > Search for Maven > Work offline (checked)