22

在本地机器上,我安装了一个带有 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>

所以我声明了本地工件存储库,目的是每次都会重新加载所有内容。我也有几个依赖项,它们是 SNAPSHOTS。

现在我使用的是 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,当然他是完全正确的——它不存在。并且无法用它做任何事情。

所以我尝试使用 dependency:purge-local-repository 来清除本地库存,你猜怎么着?显然它无法清除它,因为每个工件中都没有 maven-metadata.xml,这是多么了不起的功能!

除了 .jar 和 .pom 之外的每个 .m2 工件目录都包含 maven-metadata-local-artifactory.xml(以及当前工件中 maven-metadata.xml 的正确副本)、_mave.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>
4

2 回答 2

22

我的 maven 抱怨它在本地找不到元数据,等等等等……基本上,发生的事情是我设法在中间 maven-build 中拔下电源线,并且相关本地 .m2 子目录中的元数据已损坏。我进去,从他们的 .m2 位置删除了有问题的工件,然后重新尝试构建。一切正常。只是想把这条消息留给那些和我有类似问题的人,但偶然发现了你的问题。

于 2013-12-27T20:36:43.357 回答
6

从 Maven 元数据 xml 文件看来,您在存储库中使用了非唯一快照。Maven 3 不支持非唯一的、仅使用 TIMESTAMP-BUILDNUMBER 而不是 SNAPSHOT 的快照 pom 文件。你有:

http://localhost:8081/artifactory/repo/MYGROUP/DEPENDENCY1/bla-SNAPSHOT/DEPENDENCY1-bla-XXXXX-Y.pom

文件?

于 2013-04-07T11:30:22.723 回答