我是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尝试从错误的存储库下载快照工件。我在父级的父pom.xml
中设置了2个存储库:internal
和snapshots
。
<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
我验证了snapshot
repo中的文件是否正确,它是否正确生成了maven-metadata.xml等等。看来Maven正确地从snapshot
repo下载了元数据,确定了正确的时间戳版本,但不知何故,它决定从internal
repo而不是snapshots
下载实际文件,这导致404和构建失败。
我不知道Maven是如何运作的,请帮助。
答案 0 :(得分:0)
@lee - 这是我如何从Archiva内部快照库中下载自定义工件。我每天都使用这个配置。 settingsl.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>
答案 1 :(得分:0)
更简洁,无需修改任何pom.xml
,您可以在archiva中定义all
存储库组,其中包含internal
和snapshots
,然后添加以下内容你的.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>
答案 2 :(得分:0)
我知道这个帖子已经过时了,为了让maven在快照存储库中搜索,版本应以&#34; -SNAPSHOT&#34; (而不是&#34; .SNAPSHOT&#34;)