У меня такая же проблема.Я не слишком много копался в исходном коде Maven.Но вот мое наблюдение.
Предполагается, что вы никогда не mvn install
myproj-common в своем локальном хранилище и не развертывали его в каких-либо удаленных хранилищах.Когда вы запускаете mvn clean site
в родительском проекте, все происходит следующим образом:
- maven определяет порядок myproj-common до myproj-client в соответствии с их зависимостями
mvn clean site
запускается на myproj-common .Все предыдущие результаты в myproj-common / target удаляются, и генерируется myproj-common / target / site .(Обратите внимание, что после этого шага ни скомпилированные классы, ни упакованные jar не существуют в myproj-common / target ) mvn clean site
работает на myproj-client .Maven сначала проверяет зависимость этого проекта и пытается найти артефакт myproj-common (классы или jar) в следующих местах: (a) myproj-common / target (b) локальный репозиторий (3) удаленные репозитории. mvn site
не работает на myproj-client , поскольку он не может найти артефакт myproj-common
Это объясняет, почему mvn clean compile site
и mvn clean package site
работает.Они оба подготовили бы myproj-common артефактов в своем целевом каталоге до того, как mvn site
запустит myproj-client .
И mvn install
, за которым следует mvn site
работает также.
Особое исключение состоит в том, что если вы добавите что-то вроде emma-maven-plugin в отчет, он автоматически скомпилирует и изменит классы.В этом случае mvn clean site
всегда работает.
Я не уверен, почему Maven пытается найти банку myproj-common на шаге 3, похоже, она не имеет ничего общего с mvn site
.Исключение случается довольно рано в ядре maven, прежде чем попасть в плагин maven-site-plugin.Это похоже не на проблему maven-site-plugin, а на общее поведение всех жизненных циклов maven (кроме clean , я полагаю).