Может ли pom-файл, загруженный в удаленный репозиторий через mvn deploy, иметь в своем названии классификатор?

Может ли pom-файл, загруженный в удаленный репозиторий через mvn deploy, иметь в своем названии классификатор?

Например, если у меня есть артефакты Webapp-1.0.war а также Webapp-1.0-CLASSIFIER.war могу ли я легко иметь Webapp-1.0.pom а также Webapp-1.0-CLASSIFIER.pom?

Я хотел бы иметь возможность развертывать артефакты с несколькими классификаторами в одном и том же хранилище, но mvn deploy цель всегда терпит неудачу, потому что она пытается загрузить pom, который уже там.

Я не хочу использовать mvn deploy:deploy-file если я могу избежать этого, потому что не хочу излишне усложнять сборку CI, т. е. необходимость указывать файл / url в качестве параметров конфигурации, потому что файл и url будут меняться в зависимости от того, развертываю ли я снимок / версию выпуска.

3 ответа

Ваша проблема в понимании Maven. Если вы создаете артефакт с классификатором, это означает наличие pom, описывающего создание артефакта с помощью классификатора, а также артефакта без классификатора. Другими словами, ваша проблема может быть решена с помощью одного файла POM. Кроме того, вы можете развернуть артефакт и несколько артефактов с помощью классификаторов с помощью одного вызова вызова плагина maven-dependency-plugin, как показано ниже:

mvn deploy:deploy-file
-DgroupId=com.soebes.test
-DartifactId=x1
-Dversion=2.7.5-SNAPSHOT
-Dfile=TheMainArtifact.jar
-Dclassifiers=first,second
-Dfiles=firstFile,secondFile
-Dtypes=zip,xml
-DrepositoryId=RepositoryId 
-Durl=URLOfTheRepository

С помощью вышеприведенного (в одну строку) вы можете развернуть несколько файлов с помощью одной команды развертывания, не изменяя конфигурацию Neux или любого другого менеджера репозитория, чтобы разрешить повторное развертывание (неправильный путь!).

Я тоже сталкивался с этим раньше. Насколько я знаю, секретные POM не допускаются.

Хитрость заключается в том, чтобы настроить удаленное репо, чтобы позволить обновлять POM, не допуская повторного развертывания других артефактов.

В Nexus это делается через Repository Targets. Шаблон для сопоставления POM в хранилище .*/(?!.*\.pom).*, Цель связывается с привилегиями, которые могут быть назначены ролям, которые затем назначаются пользователям. (Память немного нечеткая, я получил это работает, а затем решил использовать deploy:deploy-file вместо.)

Там нет такого понятия, как секретный пом. Для каждой версии groupId + artifactId + есть ровно один pom, и этот pom также используется для прикрепленных / классифицированных артефактов. Это означает, что, например, основной артефакт и все прикрепленные артефакты имеют одинаковые зависимости. Наиболее часто используемые прикрепленные артефакты javadoc а также sources, для которого это имеет смысл.

Другие вопросы по тегам