В настоящее время я отлаживаю досадную ситуацию maven, в которой простое
mvn dependency:tree
жалуется
The POM for com.bitplan.java:com.bitplan.bobase:jar:${bobase.version} is missing, no dependency information available
Так что похоже, что свойство где-то не определено.Но соответствующий родительский pom явно имеет:
<properties>
<bobase.version>0.0.2</bobase.version>
</properties>
Что более интересно, я даже не ссылаюсь ни на один соответствующий файл с таким объявлением напрямую.
В процессе этого несчастного случая влокальный репозиторий каталог:
./com/bitplan/java/com.bitplan.bobase/${bobase.version}
.Поэтому мне стало любопытно, и я посмотрел, есть ли еще такие:
cd $HOME/.m2/repository
find . -type d | grep "\\$"
дает мне около 27 результатов, например
./net/sourceforge/htmlcleaner/htmlcleaner/${htmlcleaner.version}
./junit/junit/${junit.version}
./junit/junit/${junit4.version}
./org/hamcrest/hamcrest-all/${hamcrestall.version}
./org/apache/commons/commons-lang3/${commons.version}
./commons-io/commons-io/${commons-io.version}
./commons-io/commons-io/${commons.io.version}
./args4j/args4j/${args4j.version}
Я понимаю только один из случаев - обыкновенные.io.version one - это была опечатка, и я исправил это.Все остальные переменные должны быть разыменованы нормально, и таких каталогов не должно быть.
Что вызывает такое поведение maven и как его можно избежать?
Я нашел только одинОтвечающий на вопрос:
, но это не дало мне никакой полезной подсказки
отладка
find . -type d -name "*\$*" -exec echo -n {} \; -exec stat -f %Sm -t " "%Y-%m-%d {} \;
показывает время последнего изменения каталогов.Например,
./junit/junit/${junit.version} 2018-08-22
./junit/junit/${junit4.version} 2017-05-28
, так что в моем случае проблема, кажется, случается время от времени.