在机器本地我有一个安装了maven存储库的Artifactory,我有一个非常简单的.pom文件,我的项目指向它:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>MYGROUP</groupId>
<artifactId>NAME</artifactId>
<packaging>jar</packaging>
<version>VERSION</version>
<build>
<sourceDirectory>SRCFOLDER</sourceDirectory>
<testSourceDirectory>TESTFOLDER</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>local-artifactory</id>
<name>Artifactory</name>
<url>http://localhost:8081/artifactory/repo</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>local-artifactory-plugins</id>
<name>Artifactory Plugins</name>
<url>http://localhost:8081/artifactory/repo</url>
</pluginRepository>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>MYGROUP</groupId>
<artifactId>DEPENDENCY1</artifactId>
<version>bla-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>MYGROUP</groupId>
<artifactId>DEPENDENCY2</artifactId>
<version>bla-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
所以我声明了local-artifactory存储库,意图是每次都会重新加载所有内容。此外,我有几个依赖项是快照。
现在我正在使用maven 3.0.5,当我正在编译它时它工作正常,但它根本不是刷新快照。决不。永远。日志文件如下所示:
[DEBUG] Could not find metadata MYGROUP:DEPENDENCY1:bla-SNAPSHOT/maven-metadata.xml in local (/opt/myuser/.m2/repository)
[DEBUG] Using connector WagonRepositoryConnector with priority 0 for http://localhost:8081/artifactory/repo
Downloading: http://localhost:8081/artifactory/repo/MYGROUP/DEPENDENCY1/bla-SNAPSHOT/maven-metadata.xml
Downloaded: http://localhost:8081/artifactory/repo/MYGROUP/DEPENDENCY1/bla-SNAPSHOT/maven-metadata.xml (314 B at 13.9 KB/sec)
[DEBUG] Writing resolution tracking file /opt/myuser/.m2/repository/MYGROUP/DEPENDENCY1/bla-SNAPSHOT/resolver-status.properties
[DEBUG] Could not find metadata MYGROUP:DEPENDENCY1:bla-SNAPSHOT/maven-metadata.xml in local (/opt/myuser/.m2/repository)
[DEBUG] Skipped remote update check for MYGROUP:DEPENDENCY1:bla-SNAPSHOT/maven-metadata.xml, already updated during this session.
所以它经常抱怨它找不到本地maven-medatada.xml,当然他完全正确 - 它不在那里。并没有做任何事情。
所以我尝试使用依赖:purge-local-repository来清除本地库存并猜测是什么?显然它无法清除它,因为每个工件中都没有maven-metadata.xml,这真是一个了不起的功能!
除.jar和.pom之外的每个.m2工件目录都包含maven-metadata-local-artifactory.xml(具有来自工件的当前maven-metadata.xml的正确副本),_ make.repositories和resolver-status的.properties。
Maven只是开箱即用,.m2中没有配置,并且/ conf文件夹中的配置是默认的,没有任何单一更改。
更新:我只是从工件中手动下载了maven-metadata.xml,并将其作为maven-metadata.xml放在.m2中作为依赖项 - 没有效果,它仍然“缺失”它。所以我不知道它对我的要求了。它只是无法更新依赖项,因为“已在此会话期间更新”。好吧,我不知道它究竟更新了什么,但显然还有别的东西。
UPDATE2:服务器上maven-metadata.xml的内容:
<metadata>
<groupId>MYGROUP</groupId>
<artifactId>DEPENDENCY1</artifactId>
<version>bla-SNAPSHOT</version>
<versioning>
<snapshot>
<buildNumber>1</buildNumber>
</snapshot>
<lastUpdated>20130322155759</lastUpdated>
</versioning>
</metadata>
答案 0 :(得分:15)
我的maven抱怨它找不到本地的元数据,等等......基本上,我发生的事情就是我设法拔掉我在maven-build中的电源线及其在相关本地.m2子目录中的元数据腐败了。我进去了,从他们的.m2位置删除了有问题的工件并重新尝试了构建。一切正常。只是想给那些与我有类似问题的人留下这条信息,但偶然发现了你的问题。
答案 1 :(得分:5)
从maven元数据xml文件看起来,您在存储库中使用非唯一快照。 Maven 3不支持使用TIMESTAMP-BUILDNUMBER而非SNAPSHOT的非唯一,仅快照pom文件。你有:
http://localhost:8081/artifactory/repo/MYGROUP/DEPENDENCY1/bla-SNAPSHOT/DEPENDENCY1-bla-XXXXX-Y.pom
文件?