Maven 2 Maven未下载快照
我正在尝试使用位于本地网络中的存储库来设置Maven,并且我已经为快照设置了一个存储库,为发布设置了一个存储库(两个都是ApacheArchiva) 从发行版存储库下载包可以正常工作。但是,当我尝试从快照存储库加载快照版本时,当我尝试下载我自己部署的快照时,我总是会出错:Maven 2 Maven未下载快照,maven-2,archiva,Maven 2,Archiva,我正在尝试使用位于本地网络中的存储库来设置Maven,并且我已经为快照设置了一个存储库,为发布设置了一个存储库(两个都是ApacheArchiva) 从发行版存储库下载包可以正常工作。但是,当我尝试从快照存储库加载快照版本时,当我尝试下载我自己部署的快照时,我总是会出错: [INFO] ------------------------------------------------------------------------ [ERROR] BUILD ERROR [INFO] --
[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),
该软件包在快照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>
[...]
<dependency>
<groupId>my.company</groupId>
<artifactId>product2</artifactId>
<version>0.0.2-SNAPSHOT</version>
</dependency>
[…]
我的快照
我的名字快照存储库
http://my-snapshots:8080/archiva/repository/snapshots
我的内心
我的名字内部存储库
http://my-repo:8080/archiva/repository/internal
[...]
我的公司
前端api
0.0.2-快照
jar.lastUpdated
[...]
我还检查了从快照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>
我的公司
产品2
0.0.2-快照
7.
20090824.130209
20090824130209
它显示正确的日期和时间戳(包含此时间戳的包存在于repo中)
我是否缺少有关存储库设置或快照概念的内容?有人有同样的问题吗?或者有人知道关于快照和存储库的详细文档吗?我的应用程序的依赖项声明是什么样子的?我希望它看起来像这样:
[...]
<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>
[...]
<dependency>
<groupId>my.company</groupId>
<artifactId>product2</artifactId>
<version>0.0.2-SNAPSHOT</version>
</dependency>
我的公司
:
Maven版本可以包含一个字符串文字,表示项目当前正在进行活动开发。如果版本包含字符串“SNAPSHOT”,那么在安装或发布此组件时,Maven会将此令牌扩展为转换为UTC(协调世界时)的日期和时间值。例如,如果您的项目有一个“1.0-SNAPSHOT”版本,并且您将此项目的工件部署到Maven存储库中,那么如果您要在2008年2月7日晚上11:08部署一个版本,Maven会将此版本扩展到“1.0-20080207-230803-1”。换句话说,当您部署快照时,您不是在发布软件组件;您正在特定时间发布组件的快照
因此,通常不需要lastUpdated属性。使用-e标志运行mvn以获取更详细的错误消息。您的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>
我的快照
我的名字快照存储库
http://my-snapshots:8080/archiva/repository/snapshots
那么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>
我的快照
用户
通过
${user.home}/.ssh/id\u dsa
一些密码短语
664
775
1) 存储库用户名和密码必须如上所述
2) 设置和pom中的id标记必须相同:
<id>my-snapshots</id>
我的快照
为什么上次更新的类型是问题?这不正是我想要的:存储库中更新的最后一个快照吗?SNAPSHOT关键字已经向Maven指示它正在开发中,并且将使用最新版本,不需要lastUpdated属性。输出来自运行“mvn-e”。