为什么maven找不到位于托管存储库中的工件?

时间:2016-08-30 09:10:34

标签: maven nexus

我们有一个nexus-server,它有一个包含每个外部代理库(例如maven-central)的公共maven-public repository-group。除此之外,我们还有一个本地托管存储库我们称之为MyProjectRepository。它分为release-repo和snapshot-repo。

所以,目前它看起来像这样:

  • MyProjectRepository
  • MyProjectRepository-快照
    • ArtifactOne
      • 快照-5
      • ...
      • 快照-1
    • ArtifactTwo
      • 快照-3
      • ...
      • 快照-1

好的,ArtifactTwo需要ArtifactOne作为依赖项。所以,我在依赖项部分添加了这个:

    <dependency>
        <groupId>com.company</groupId>
        <artifactId>artifactone</artifactId>
        <version>0.0.5</version>
    </dependency>

我已经像这样配置了存储库部分:

    <repository>
      <id>myprojectrepositoryss</id>
      <name>MyProjectRepository Snapshots</name>
      <url>http://mylocalnexus.com/nexus/repository/MyProjectRepository-Snapshots/</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>

我的settings.xml镜像部分如下所示:

    <mirror>
       <!--This sends everything else to /public -->
       <id>nexus</id>
       <mirrorOf>external:*, !myprojectrepositoryss</mirrorOf>
       <url>http://mylocalnexus.com/nexus/repository/maven-public/</url>
     </mirror>

我的settings.xml配置文件 - 部分如下所示:

<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>

尽管设置了本教程中描述的所有内容,但我的IDE指出无法找到给定依赖项中的工件。

  

无法在项目ArtifactTwo上执行目标:无法解决   项目com.company:ArtifactTwo:jar:0.0.3-SNAPSHOT的依赖项:   找不到   com.company:artifactone:jar:0.0.5 in   http://mylocalnexus.com/nexus/repository/maven-public/被缓存进来了   本地存储库,解决方案将不会重新尝试,直到   更新了nexus的间隔或强制更新

为什么在“maven-public”中搜索依赖项? 有没有人知道如何让这个工作?

2 个答案:

答案 0 :(得分:0)

它根据需要在maven-public组中进行搜索,并在设置文件的镜像URL中进行配置。

您只需将项目存储库添加到maven-public存储库组,它就可以正常工作。

答案 1 :(得分:0)

这很奇怪,但是在<distributionManagement>中声明要部署项目快照或发布的存储库,默认将其设置为< strong>下载项目快照或发布。 我的解决方案是提供一个明确的<repositories>部分,其中列出了<distributionManagement>部分中的快照和发布存储库。

请注意,本地和远程存储库的高度缓存结构以及Maven在本地标记无法在白天远程尝试找到的工件的“习惯”,这使情况分析变得非常复杂。使用 -U Maven选项确实可以解决该问题。