0

我是Maven的新手。我正在尝试设置一个本地 Archiva 1.3.6 服务器作为项目内部工件的存储库服务器,以及镜像到外部存储库。除了快照,一切都很好。我正在使用 Maven 版本 3.0.5。

这是我settings.xml文件中的镜像设置

  <mirrors>
    <mirror>
        <id>internal</id>
        <mirrorOf>external:*</mirrorOf>
        <name>My Maven Repository</name>
        <url>http://my.repo.server:9000/archiva/repository/internal/</url>
    </mirror>
  </mirrors> 

在构建期间,Maven 尝试从错误的存储库下载快照工件。我在父级的父级中设置了 2 个存储库pom.xml:internalsnapshots.

<repositories>
    <repository>
        <id>internal</id>
        <url>http://my.repo.server:9000/archiva/repository/internal/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>snapshots</id>
        <url>http://my.repo.server:9000/archiva/repository/snapshots/</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

在项目中,pom.xml我有以下依赖项:

<dependency>
    <groupId>com.mygroup</groupId>
    <artifactId>metadata-framework</artifactId>
    <version>1.0.3.SNAPSHOT</version>
</dependency>

在构建期间,Maven 尝试这样做:

Downloading: 
.../archiva/repository/**snapshots**/com/mygroup/metadata-framework/1.0.3.SNAPSHOT/maven-metadata.xml

Downloaded: 
.../archiva/repository/**snapshots**/com/mygroup/metadata-framework/1.0.3.SNAPSHOT/maven-metadata.xml (795 B at 16.9 KB/sec)

Downloading: 
.../archiva/repository/**internal**/com/mygroup/metadata-framework/1.0.3.20130908.081541-1/cems-metadata-framework-1.0.3.20130908.081541-1.pom

[WARNING] The POM for com.myground:metadata-framework:jar:1.0.3.20130908.081541-1 is missing, no dependen
cy information available

我验证了snapshotrepo 中的文件是正确的,它已经正确生成了 maven-metadata.xml 等等。看来 Maven 从snapshotrepo 正确下载了元数据,确定了正确的时间戳版本,但不知何故它决定从internalrepo下载实际文件而不是snapshots,这会导致 404 和失败的构建。

我不知道 Maven 是如何工作的,请帮忙。

4

3 回答 3

0

@lee - 这是我从 Archiva 中的内部快照存储库下载自定义工件的方法。我每天都使用这个配置。设置l.xml:

假设我有一个名为“ help”的虚拟仓库。 help由面向外部的回购和 2 个面向内部的回购组成。这两个面向内部的回购是: help-internal help-snapshots

在该<mirrors>部分下,我声明:

<mirror>
    <id>help</id>
    <mirrorOf>*, !help-snapshots</mirrorOf>
    <name>The Help Repository</name>
    <url>http://blah:8080/archiva/repository/help/</url>
</mirror>

在该<servers>部分下,我声明:

<server>
    <id>help</id>
    <username>my_user_name</username>
    <password>{my_encrypted_pwd}</password>
</server>
<server>
    <id>help-snapshots</id>
    <username>my_user_name</username>
    <password>{my_encrypted_pwd}</password>
</server>

现在是最后一点。在我使用内部快照的项目的 pom 中,我包括以下内容:

<repositories>
    <repository>
        <id>help-snapshots</id>
        <url>http://blah:8080/archiva/repository/help-snapshots/</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>
于 2013-09-09T06:45:35.223 回答
0

更简洁,并且不修改任何pom.xml,您可以在存档中定义一个all存储库组,其中包含internalsnapshots,然后在您的 中添加以下内容.m2/settings.xml

<mirrors>
    <mirror><id>myGroup</id><mirrorOf>*</mirrorOf>
        <url>http://my.repo.server:9000/archiva/repository/all/</url>
    </mirror>
</mirrors>
<profiles>
    <profile><id>alwaysactive</id>
        <activation><activeByDefault>true</activeByDefault></activation>
        <repositories>
            <repository><id>unused</id><url>unused</url></repository>
        </repositories>
    </profile>
<profiles>
于 2015-05-20T08:41:02.003 回答
0

我知道这篇文章已经过时了,因为为了让 maven 在快照存储库中搜索,版本应该以“-SNAPSHOT”(而不是“.SNAPSHOT”)结尾

于 2017-06-07T11:42:42.780 回答