4

我有 Maven2 项目。除一个之外的所有依赖项都从公共存储库http://repo.maven.apache.org/maven2/下载。

但是我有 1 个依赖项,需要从公司内部的存储库中下载(我们使用 Sonatype Nexus 来存储这个依赖项)。

另外,我不想在我的内部回购中创建公共回购的完整副本。

此时我在 pom.xml 中有:

<url>http://maven.apache.org</url>

<repositories>
    <repository>
        <id>thirdparty</id>
        <url>http://<my_nexus_server_ip>:8081/nexus/content/repositories/thirdparty</url>
    </repository>
</repositories>

因此,在构建过程中,我看到了很多垃圾消息(在这种情况下,第一行是垃圾):

Downloading: http://<my_nexus_server_ip>:8081/nexus/content/repositories/thirdparty/ant/ant/1.6.5/ant-1.6.5.pom
Downloading: http://repo.maven.apache.org/maven2/ant/ant/1.6.5/ant-1.6.5.pom
Downloaded: http://repo.maven.apache.org/maven2/ant/ant/1.6.5/ant-1.6.5.pom (861 B at 3.2 KB/sec)  

我想明确指出 Maven 对于哪个依赖项必须使用内部存储库,而对于其他依赖项忽略它(并指出对于其他依赖项 Maven2 必须使用公共存储库)。

您能否帮助在 Maven 中实现这种行为?

提前致谢!

4

2 回答 2

1

根据这个答案,无法为某些声明的依赖项设置特定的存储库。

于 2015-09-20T11:32:51.710 回答
-1

您需要将 Nexus 中的公共存储库组配置为您的 Maven 构建中唯一使用的一个,如下所示:

<settings>
  <mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://localhost:8081/nexus/content/groups/public</url>
    </mirror>
  </mirrors>
  <profiles>
    <profile>
      <id>nexus</id>
      <!--Enable snapshots for the built in central repo to direct -->
      <!--all requests to nexus via the mirror -->
      <repositories>
        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
     <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
</settings>

您必须在 nexus 中设置一个单独的存储库,就像您描述的存储库一样ThirdParty,并将此存储库添加到公共存储库组的配置中。此外,您需要将一个依赖项上传到该特定存储库中。除此之外,您应该必须使用releaseSNAPSHOT存储库,这意味着您需要在公司主 pom 文件中相应地配置您的 distributionManagement。

于 2013-06-12T15:59:22.807 回答