我们正在尝试将Archiva用作中央和其他外部存储库的Maven代理,以及用作我们的工件的快照存储,这些工件由Hudson从SVN自动构建并安装到快照存储库。
我无法将Maven客户端设置为同时使用内部存储库和快照存储库。我的项目有一些外部依赖项(例如log4j),可以从Archiva内部存储库中正确下载。另外,我的项目还依赖于自己的项目,该项目的工件已经构建并安装到快照存储库中。但是,如果我尝试构建项目,Maven将找不到我的快照工件。
log4j
我的配置文件最初具有以下设置:
<mirror> <id>company-internal</id> <name>Company's Archiva - Internal Repository</name> <url>http://www.mycompany.hu/archiva/repository/internal</url> <mirrorOf>*</mirrorOf> </mirror>
然后我添加了以下内容:
<mirror> <id>company-snapshots</id> <name>Company Archiva - Snapshots Repository</name> <url>http://www.mycompany.hu/archiva/repository/snapshots</url> <mirrorOf>apache.snapshots</mirrorOf> </mirror>
但是,Maven不会在构建时尝试查找snaphot存储库。我做错什么了?顺便说一句,我并没有真正达到<mirrorOf>元素的目的。我尝试将内部镜像设置替换为,central但这仍然无法解决我的问题。
<mirrorOf>
central
经过反复试验,以下配置对我有用。在这里,我使用了默认的archiva配置- internal保存发行版,并且snapshots仅保存内部快照。
internal
snapshots
从本质上讲,与关系不同,我们需要两个单独的<mirror>和<repository>声明- 一个用于普通工件,另一个用于快照工件。
<mirror>
<repository>
<mirrors> <mirror> <id>archiva</id> <mirrorOf>*</mirrorOf> <url>http://localhost:8080/archiva/repository/internal</url> </mirror> <mirror> <id>snapshots</id> <mirrorOf>snapshots</mirrorOf> <url>http://localhost:8080/archiva/repository/snapshots</url> </mirror> </mirrors> <profiles> <profile> <activation> <activeByDefault>true</activeByDefault> </activation> <repositories> <repository> <id>internal</id> <name>Archiva Managed Internal Repository</name> <url>http://localhost:8080/archiva/repository/internal/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>snapshots</id> <name>Archiva Managed Internal Repository</name> <url>http://localhost:8080/archiva/repository/snapshots/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> </profile> </profiles>