Как заставить Maven игнорировать локальный проект для версии локального репозитория - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть многомодульный проект maven, в котором мы затеняем Guava от Google, чтобы переместить пакеты в наше дерево пакетов, чтобы нам не приходилось беспокоиться о конфликтах версий.Я понимаю, что это довольно распространенная практика.

Сборка фляги работает нормально, как и сборка системы в целом.Однако при выполнении цели site: site в Maven он вызывает compiler: testCompile, и в этот момент перемещенные классы не могут быть найдены.Позвольте мне отметить, что предыдущий testCompile работал просто отлично.

Я подозреваю, что это потому, что проект затенения maven является партнером проекта, который завершается неудачно, и что во время второго выполнения testCompile он находит проект затенения, выглядити не находит классов для компиляции и поэтому умирает.В целевом каталоге есть правильно названный затененный jar-файл, и он содержит искомые классы.

Я думаю, я хочу знать следующее: существует ли механизм, позволяющий maven искать jar-файл?в подмодуле (источник там никогда не существовал) и пропустить скомпилированные классы?Я полагаю, что в крайнем случае я мог бы извлечь содержимое только что созданного фляги в каталог target / classes, чтобы их можно было найти.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 28 сентября 2019

У нас была такая же проблема в прошлом.И закончился отдельным циклом выпуска для затененных артефактов и других модулей, в то время как они были сохранены в том же репо:

/pom.xml - root for all child modules, except the shaded one
/shaded/pom.xml - no ref to parent (no <parent> section), own release cycle
/module1/pom.xml - explicit ref to released version of shaded artefact
...
/moduleN/pom.xml

В IDE эти файлы /pom.xml и /shaded/pom.xml были импортированы как отдельные проекты.

Это становится еще более полезным позже, когда восстановление закрашенных модулей действительно происходит только несколько раз в год.

...