Не удалось найти метаданные в локальных

Локально на машине у меня есть Artifactory, установленная с репозиториями maven, и у меня есть очень простой .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, и, конечно, он совершенно прав - он не существует. И не делает с ним ничего.

Итак, я попытался использовать зависимость: purge-local-repository, чтобы очистить локальный инвентарь и угадать, что? По-видимому, он не может очистить его, потому что в каждом артефакте нет maven-metadata.xml, какая потрясающая функциональность!

Каждый каталог артефакта .m2, отличный от .jar и .pom, содержит maven-metadata-local-artifactory.xml(с правильной копией maven-metadata.xml из artifactory, current), _mave.repositories и resver-status.properties.

Maven просто из коробки, нет конфигурации в .m2, а конфигурация в папке /conf по умолчанию без каких-либо изменений.

UPDATE: я только что вручную загрузил maven-metadata.xml из artifactory и поместил его как 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>

Ответы

Ответ 1

Из XML файла maven metadata похоже, что вы используете неисторический снимок в своем репозитории. Maven 3 не поддерживает не-уникальный, только файл моментальных снимков с TIMESTAMP-BUILDNUMBER вместо SNAPSHOT. У вас есть:

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

файл?

Ответ 2

Мой maven жаловался, что он не может найти метаданные в local, blah blah... и в основном, что случилось, так это то, что мне удалось отключить кабель питания в mid-maven-build и его метаданных в соответствующем локальном подкаталоге .m2 поврежден. Я вошел, удалил найденные артефакты из своего местоположения .m2 и повторил попытку сборки. Все работало нормально. Просто хотел оставить это сообщение для тех, у кого есть аналогичная проблема с моей, но наткнулся на ваш вопрос.