Я определил 2 репозитория в pom.xml, как показано ниже. Один публичный, а другой сторонний.
<repositories>
<repository>
<id>public</id>
<name>Nexus - Public Repositories</name>
<layout>default</layout>
<url>http://mavenrepo.aaa.net/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>thirdparty</id>
<name>Nexus - Third Party</name>
<layout>default</layout>
<url>http://mavenrepo.aaa.net/nexus/content/repositories/thirdparty</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
Скажем, есть зависимость с именем grpId:artId:1.1.0, которую я определил в своем файле pom. Эта зависимость присутствует как в репозиториях, определенных выше, так и в сторонних репозиториях.
Когда я запускаю mvn install, я вижу различное поведение в том, как maven загружает артефакт grpId:artId:1.1.0 в зависимости от версии maven, которую я использую.
Поведение: -
<сильный>1. Использование Maven 3.1 и предыдущих версий
- а. Maven ищет зависимость grpId:artId:1.1.0 в общедоступном репозитории.
- b. Maven находит зависимость и загружает ее.
- c. Maven не ищет зависимость grpId:artId:1.1.0 в
"стороннем" репозитории, поскольку она уже загружена из предыдущего репозитория.
<сильный>2. Использование Maven 3.2
- а. Maven ищет зависимость grpId:artId:1.1.0 в общедоступном репозитории.
- b. Maven находит зависимость в общедоступном репозитории и загружает ее.
- c. Maven снова ищет зависимость grpId:artId:1.1.0 в «стороннем» репозитории, хотя она уже загружена из «общедоступного» репозитория.
- d. Maven находит зависимость в «стороннем» репозитории, загружает ее и перезаписывает зависимость, загруженную ранее из «общедоступного» репозитория.
Интересно, почему maven ведет себя абсурдно для maven-3.2. Он должен перестать искать зависимость, которая уже разрешена и загружена из одного репозитория.
Есть ли способ добиться этого с помощью maven 3.2?
<updatePolicy>always</updatePolicy>
? - person khmarbaise   schedule 14.11.2014