Мой проект Maven зависит от не-Maven библиотеки, которая закодирована как системная зависимость:
<dependency>
<groupId>com.example</groupId>
<artifactId>foo</artifactId>
<version>${foo.version}</version>
<scope>system</scope>
<systemPath>${foo.jar}</systemPath>
</dependency>
, где расположение библиотеки можно контролировать с помощью локальных свойств:
<properties>
<foo.version>2.1.1</foo.version>
<foo.basedir>/usr/local</foo.basedir>
<foo.libdir>${foo.basedir}/lib</foo.libdir>
<foo.jar>${foo.basedir}/java/foo-${foo.version}.jar</foo.jar>
</properties>
Недавно библиотека перешла с версии 2.1.1 на версию 2.2.0, поэтому я изменил свойство foo.version
, но Maven, похоже, застрял на старой версии:
...
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
Missing:
----------
1) com.example:foo:jar:2.1.1
...
Я бегал mvn dependency:purge-local-repository
(на самом деле много раз). Строка 2.1.1
не отображается нигде в моем POM, profiles.xml
или settings.xml
. Тем не менее, каждый раз, когда я пытаюсь построить свой проект, Maven терпит неудачу с вышеуказанной ошибкой.
Что здесь происходит? Где Maven хранит информацию о версии зависимости и как ее обновить?