快照未由Maven下载

时间:2009-08-25 13:47:55

标签: maven-2 archiva

我正在尝试使用位于我们本地网络中的存储库来设置Maven,我已经为快照设置了存储库,并为Releases设置了存储库(两个都是apache archiva)。

从发布存储库下载软件包可以正常工作。但是,当我尝试从快照存储库加载SNAPSHOT版本时,当我尝试下载自己部署的SNAPSHOT时,我不断收到错误:

[INFO] ------------------------------------------------------------------------  
[ERROR] BUILD ERROR  
[INFO] ------------------------------------------------------------------------  
[INFO] Failed to resolve artifact.  

Missing:  
----------  
1) my.company:product2:jar.lastUpdated:0.0.2-SNAPSHOT

  Try downloading the file manually from the project website.  
[...]

 Path to dependency:   
        1) my.company:product1:war:0.0.1-SNAPSHOT  
        2) my.company:product2:jar.lastUpdated:0.0.2-SNAPSHOT  

 ----------
1 required artifact is missing.

for artifact: 
 my.company:product1:war:0.0.1-SNAPSHOT

from the specified remote repositories:  
  my-internal (http://my-repo:8080/archiva/repository/internal),  
  central (http://repo1.maven.org/maven2),
  my-snapshots (http://my-repo:8080/archiva/repository/snapshots),

该软件包在snapshots-repo中可用,网络已启动,登录正常。

我的pom.xml看起来像这样:

 [...]
<repositories>
  <repository>
  <id>my-snapshots</id>
  <name>my name Snapshots Repository</name>
  <url>http://my-snapshots:8080/archiva/repository/snapshots</url>
  <snapshots>
<enabled/>
<updatePolicy/>
<checksumPolicy/>
</snapshots>
</repository>
<repository>
  <id>my-internal</id>
  <name>my name internal Repository</name>
  <url>http://my-repo:8080/archiva/repository/internal</url>
</repository>
  </repositories>
 [...]

<dependency>
    <groupId>my.company</groupId>
    <artifactId>frontend-api</artifactId>
    <version>0.0.2-SNAPSHOT</version>
    <type>jar.lastUpdated</type>
</dependency>
 [...]

我还检查了从snapshot-repo下载的maven-metadata.xml:

<?xml version="1.0" encoding="UTF-8"?>
<metadata>
 <groupId>my.company</groupId>
 <artifactId>product2</artifactId>
 <version>0.0.2-SNAPSHOT</version>
 <versioning>
    <snapshot>
      <buildNumber>7</buildNumber>
     <timestamp>20090824.130209</timestamp>
  </snapshot>
   <lastUpdated>20090824130209</lastUpdated>
 </versioning>
</metadata>

它显示正确的日期和时间戳(包含此时间戳的包存在于回购中)。

我是否遗漏了有关存储库设置或SNAPSHOT概念的内容?有没有人有同样的问题?或者有人知道有关SNAPSHOT和存储库的一些详细文档吗?

3 个答案:

答案 0 :(得分:3)

my-app的依赖声明是什么样的?我希望它看起来像这样:

<dependency>
  <groupId>my.company</groupId>
  <artifactId>product2</artifactId>
  <version>0.0.2-SNAPSHOT</version>
</dependency>

从错误中看,它看起来像是由原型生成并添加了lastUpdated类型。如果是这种情况,删除lastUpdated应解决问题。

如果情况并非如此,您可以分享您的POM部分吗?

有关Maven SNAPSHOT版本的更多信息,请参阅Maven book

  

Maven版本可以包含字符串文字,表示项目当前处于活动开发状态。如果版本包含字符串“SNAPSHOT”,则当您安装或发布此组件时,Maven会将此标记扩展为转换为UTC(协调世界时)的日期和时间值。例如,如果您的项目的版本为“1.0-SNAPSHOT”,并且您将此项目的工件部署到Maven存储库,那么如果您要在11版本部署版本,Maven会将此版本扩展为“1.0-20080207-230803-1”。 :UTC时间2008年2月7日晚上8点。换句话说,在部署快照时,您不会发布软件组件;您正在特定时间发布组件的快照。

因此通常不需要lastUpdated属性。

答案 1 :(得分:0)

使用-e标志运行mvn以获取更详细的错误消息。

答案 2 :(得分:0)

您的settings.xml文件怎么样?

如果您的pom xml具有以下内容:

<repositories>
   <repository>
   <id>my-snapshots</id>
   <name>my name Snapshots Repository</name>
   <url>http://my-snapshots:8080/archiva/repository/snapshots</url>
   <snapshots>
       <enabled/>
       <updatePolicy/>
       <checksumPolicy/>
   </snapshots>
</repository>

然后setting.xml应该有:

<server>
    <id>my-snapshots</id>
    <username>user</username>
    <password>pass</password>
    <privateKey>${user.home}/.ssh/id_dsa</privateKey>
    <passphrase>some_passphrase</passphrase>
    <filePermissions>664</filePermissions>
    <directoryPermissions>775</directoryPermissions>
    <configuration></configuration>
  </server>

1)存储库用户名和密码必须如上所述

2)设置和pom中的id标记必须相同:

<id>my-snapshots</id>