你怎么阻止maven试图访问http://repo.maven.apache.org?

Chl*_*loe 37 repository maven-3 maven

开发机器无法访问互联网,大约需要60秒才能超时.当我尝试建造时,我明白了

Downloading: http://repo.maven.apache.org/maven2/com/google/gsa-connector/2.8.0/gsa-connector-2.8.0.pom
Run Code Online (Sandbox Code Playgroud)

但是,我的POM中有以下内容:

    <repository>
      <id>bb-nexus</id>
      <url>http://repo.dev.bloomberg.com/content/groups/public</url>
      <releases><enabled>true</enabled></releases>
      <snapshots><enabled>true</enabled></snapshots>
    </repository>
    <repository>
      <id>nexus-3rdparty</id>
      <url>http://repo.dev.bloomberg.com/content/repositories/thirdparty/</url>
      <releases><enabled>true</enabled></releases>
      <snapshots><enabled>true</enabled></snapshots>
    </repository>
Run Code Online (Sandbox Code Playgroud)

它总是试图首先去repo.maven.我甚至尝试添加到D:\.m2\settings.xml

<settings>
  <mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://repo.dev.bloomberg.com/content/groups/public</url>
    </mirror>
  </mirrors>
Run Code Online (Sandbox Code Playgroud)

基于http://maven.apache.org/guides/mini/guide-mirror-settings.html,它继续首先尝试repo.maven.我正在使用Apache Maven 3.0.4(r1232337; 2012-01-17 03:44:56-0500)

我不能使用-o因为它仍然需要访问本地repo.dev.


这是'有效设置':

D:\Users\chloe\Projects\team\confluence-plugin>mvn help:effective-settings
[INFO] Scanning for projects...
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-install-plugin/maven-metadata.xml
[WARNING] Could not transfer metadata org.apache.maven.plugins:maven-install-plugin/maven-metadata.xml from/to central (
http://repo.maven.apache.org/maven2): Connection to http://repo.maven.apache.org refused
...
[INFO]
[INFO] --- maven-help-plugin:2.1.1:effective-settings (default-cli) @ bb-confluence-plugin ---
[INFO]
Effective user-specific configuration settings:

<?xml version="1.0" encoding="UTF-8"?>
...
<settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoca
tion="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
  <localRepository xmlns="http://maven.apache.org/SETTINGS/1.1.0">d:\.m2\repository</localRepository>
  <pluginGroups xmlns="http://maven.apache.org/SETTINGS/1.1.0">
    <pluginGroup>org.apache.maven.plugins</pluginGroup>
    <pluginGroup>org.codehaus.mojo</pluginGroup>
  </pluginGroups>
</settings>

[INFO] ------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

小智 43

所有pom文件都继承自maven super POM http://maven.apache.org/ref/3.0.4/maven-model-builder/super-pom.html ,其中包含以下条目:

<repositories>
    <repository>
        <id>central</id>
        <name>Central Repository</name>
        <url>http://repo.maven.apache.org/maven2</url>
        <layout>default</layout>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)

尝试在你的pom中设置:

<repositories>
    <repository>
        <id>central</id>
        <url>http://repo.dev.bloomberg.com/content/groups/public</url>
        <releases>
            <enabled>false</enabled>
        </releases>
    </repository>
</repositories>

<pluginRepositories>
    <pluginRepository>
        <id>central</id>
        <url>http://repo.dev.bloomberg.com/content/groups/public</url>
        <releases><enabled>false</enabled></releases>
    </pluginRepository>
</pluginRepositories>
Run Code Online (Sandbox Code Playgroud)

  • 好的,我知道了!我不得不添加` &lt;pluginRepository&gt; &lt;id&gt;central&lt;/id&gt;`。 (2认同)

小智 23

覆盖中央存储库

这个怎么运作:

大多数组织都需要建立一个或多个共享库,因为不是每个人都可以部署,或简单地从Maven的中央下载repository.To发布的版本为他们的网络中在不同的环境下使用,组织通常希望建立所谓作为内部存储库.

将此存储库用于项目时,有两种选择:将其用作镜像,或者使其覆盖中央存储库.如果要将其专门用作中央存储库的副本,并且让开发人员在其设置中配置它,则可以将其用作镜像.或者要防止进入到中央存储库更大的控制权,从项目层面,而不是在每个用户的设置来配置存储库中,或将其包含在同一仓库自己的神器这种情况下一样,你应该重写中央库.

此外,在此时,要记住由maven依赖项执行的解析过程非常重要,它们具有两个主要的存储库设置:

  1. 与我们有关的内容将在我们内部列出;
  2. 与将在节点中添加或在生命周期中使用的插件相关.

解决方案:

作为一个面向对象的框架,Maven让所有POM都有一个隐含的父级Super POM.在其定义下放置依赖项和插件第一个解析程序存储库配置:

<repositories>
    <repository>
      <id>central</id>
      <name>Maven Repository Switchboard</name>
      <layout>default</layout>
      <url>http://repo1.maven.org/maven2</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <name>Maven Plugin Repository</name>
      <url>http://repo1.maven.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
    </pluginRepository>
  </pluginRepositories> 
Run Code Online (Sandbox Code Playgroud)

要使用内部存储库覆盖中央存储库,必须在设置文件和/或使用标识符中心的POM中定义存储库.通常,必须将其定义为常规存储库和插件存储库,以确保所有访问都是一致的.例如:

<repositories>
    <repository>
      <id>central</id>
      <name>Maven Repository Switchboard</name>
      <layout>default</layout>
      <url>http://repo.dev.bloomberg.com/content/groups/public</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <name>Maven Plugin Repository</name>
      <url>http://repo.dev.bloomberg.com/content/groups/public</url>
      <layout>default</layout>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
    </pluginRepository>
  </pluginRepositories> 
Run Code Online (Sandbox Code Playgroud)

相关链接:Coderwall - 阻止maven尝试访问其中央存储库

  • 这适用于 maven 2。对于 Maven 3,您只需要提供一个 `&lt;mirror&gt;` 属性,如 https://maven.apache.org/settings.html#Mirrors 中所述 (2认同)