У меня есть проект A-parent со следующей структурой:
projectA-parent|
----------------|projectA
----------------|projectA-core
----------------|projectA-api
Модуль projectA просто определяет зависимости от ядра и API [1], поэтому я могу просто определить зависимость от projectA в других проектах, которым нужны и ядро, и API. Я разворачиваю проект в Archiva (1.4-M2), в репозиторий SNAPSHOT.
У меня есть еще один проект X, в котором я определяю зависимость от проекта A, и сегодня днем цель "mvn compile" начала давать сбой из-за нерешенных проблем компиляции. После исследования с помощью «mvn dependency:tree» в этом проекте я обнаружил, что в проекте A зависимость от projectA-core была объявлена как «среда выполнения». В то время как сегодня утром все было так, я выполнил несколько установок mvn, начиная с того, что область видимости «компилируется» (см. [1], где указано самое последнее определение pom).
Глядя на архив, я вижу следующие файлы для этого проекта (сокращенно):
projectA-0.0.7-20120712.084920-61-tests.jar
projectA-0.0.7-20120712.084920-61-tests.jar.md5
projectA-0.0.7-20120712.084920-61-tests.jar.sha1
projectA-0.0.7-20120712.084920-61.jar
projectA-0.0.7-20120712.084920-61.jar.md5
projectA-0.0.7-20120712.084920-61.jar.sha1
projectA-0.0.7-20120712.084920-61.pom
projectA-0.0.7-20120712.084920-61.pom.md5
projectA-0.0.7-20120712.084920-61.pom.sha1
projectA-0.0.7-20120712.172412-87-tests.jar
projectA-0.0.7-20120712.172412-87-tests.jar.md5
projectA-0.0.7-20120712.172412-87-tests.jar.sha1
projectA-0.0.7-20120712.172412-87.pom
projectA-0.0.7-20120712.172412-87.pom.md5
projectA-0.0.7-20120712.172412-87.pom.sha1
projectA-0.0.7-20120712.180733-90.pom
projectA-0.0.7-20120712.180733-90.pom.md5
projectA-0.0.7-20120712.180733-90.pom.sha1
Вот интересная часть: если я удалю проект A из моего локального .m2/репозитория, даже если я "mvn compile -U" я получу версию 08:49, а не 18:07! Это означает, что либо maven, либо archiva разрешают 1-й снимок дня, а не самый последний. Почему это так и как это решить?
[1]:
<dependencies>
<dependency>
<groupId>com.projectA</groupId>
<artifactId>projectA-api</artifactId>
<version>${project.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.projectA</groupId>
<artifactId>projectA-core</artifactId>
<version>${project.version}</version>
<type>jar</type>
<scope>runtime</scope>
</dependency>
</dependencies>