ПОЭТОМУ эта проблема некоторое время ломала нашу сборку, и ответ был ни один из вышеперечисленных.
Вместо этого я по глупости установил для безвредного на вид приложения appendAssemblyId значение false в модуле-сборке-сборке для артефакта, который присоединяется (читай развернут, выпущен) с нашим основным артефактом. E.g.:
<execution>
<id>ci-groovy-distrib</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>my-extra-assembly</descriptorRef>
</descriptorRefs>
<!-- This is the BUG: the assemblyID MUST be appended
because it is the classifier that distinguishes
this attached artifact from the main one!
-->
<appendAssemblyId>false</appendAssemblyId>
<!-- NOTE: Changes the name of the zip in the build target directory
but NOT the artifact that gets installed, deployed, releaseed -->
<finalName>my-extra-assembly-${project.version}</finalName>
</configuration>
</execution>
В итоге:
плагин сборки использует AssemblyId в качестве классификатора для артефакта, следовательно, существенную часть его уникальных координат GAV в терминах maven (на самом деле это больше похоже на координаты GAVC - C является классификатором) .
имя файла установлено , развернуто или выпущено фактически построено из этих координат. Это не совпадает с именем файла, которое вы видите в вашей целевой директории . Вот почему ваша локальная сборка выглядит хорошо, но ваш релиз не удастся.
Глупый элемент определяет только имя локального артефакта сборки и не играет никакой роли в остальной части. Это полная красная сельдь.
Краткое содержание резюме:
Ошибка 400 от Nexus состояла в том, что наш дополнительный прикрепленный артефакт загружался поверх основного артефакта, поскольку он имел то же имя, что и основной артефакт, потому что у него были те же координаты GAVC, что и у основного артефакта, потому что я удалил единственная отличительная координата: классификатор, полученный автоматически из AssemblyId.
Расследование, чтобы выяснить, было ли это длинным и извилистым путем, ответ был тут же в документах для собрания мавенов:
appendAssemblyId
булево
Установите в false, чтобы исключить идентификатор сборки
из конечного имени сборки и создания результирующей сборки
Артефакты без классификатора. Таким образом, сборочный артефакт, имеющий
тот же формат, что и упаковка текущего проекта Maven заменит
файл для этого основного артефакта проекта .
- Значение по умолчанию: true.
- Свойство пользователя: assembly.appendAssemblyId.
С http://maven.apache.org/plugins/maven-assembly-plugin/single-mojo.html#attach
Дополнительный жирный шрифт принадлежит мне. Документы должны иметь большое вспыхивающее предупреждение: «Установите это в false и оставьте все надежды»
В этом ответе я получил некоторую помощь о другой проблеме maven-assembly-plugin: Как использовать appendAssemblyId
Там очень помогло объяснение от Тунаки.