Мотивацией является безопасность учетных данных: убедиться, что этап развертывания (который требует доступа к учетным данным публикации) выполняется в чистой среде на отдельном компьютере, что снижает риск того, что предыдущие этапы (или другие команды, выполненные до сборки) злонамеренно изменили среду и привели к утечке учетных данных. например, для развертывания в OSSRH.
Для этого потребуется, чтобы на этапе «сборки» был запущен mvn Deploy -Pstaging (где профиль промежуточного указывает на внутренний «промежуточный» репозиторий).
ПРИМЕЧАНИЕ: этот «промежуточный» реестр будет использоваться не для SNAPSHOT, а для реальных выпусков. Это была бы просто «точка передачи» для этапов «сборки» и «публикации».
Я ожидал, что на этапе «публикации» можно будет просто извлечь пакет из реестра (все файлы, включая подписи и т. д.), а затем запустите mvn Deploy:deploy (а не просто Deploy, поскольку при этом также будет предпринята попытка запустить предыдущие этапы), чтобы переместить пакет дальше к конечному пункту назначения, внешний реестр.
Однако я понял, что это не работает, поскольку развертывание:deploy требует некоторых метаданных перед публикацией (это даже есть в FAQ по плагину):
р>
Код: Выделить всё
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy
(default-cli) on project XYZ: The packaging for this project did not assign a file to the
build artifact -> [Help 1]
Однако, когда я попробовал это, jar:jar выдал ошибку:
Код: Выделить всё
[WARNING] JAR will be empty - no content was marked for inclusion!
// ...
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:3.2.2:jar (default-cli) on
project XYZ: Error assembling JAR: Manifest file: /xyz/target/classes/META-INF/MANIFEST.MF
does not exist.
Я даже запустил пакет mvn и проверил полученный MANIFEST.MF, чтобы узнать, смогу ли я автоматически сгенерировать его на этапе «публикации»... но это слишком сложно, и я не делаю этого. понимаю это достаточно хорошо, чтобы гибко воссоздать его (т. е. меняется ли формат в зависимости от версии jar:jar, например?), и я не знаю, будет ли jar:jar просто жаловаться в любом случае о чем-то другом...
Я заметил, что основной файл .jar содержит MANIFEST.MF, а вспомогательный .jars (источники, javadoc) имеет один, который практически пуст. .. поэтому разумно ли извлечь основной манифест и повторно использовать его?
Итак, возможно ли это вообще? Возможно ли на этапе «публикации» динамически создавать «контекст сборки», содержащий только те артефакты, которые были отправлены на этапе «сборки»?
Например, можно ли как-то успешно запустите mvn Deploy:deploy (или эквивалент), заданный
Код: Выделить всё
./target
├─ xyz-1.2.3-javadoc.jar
├─ xyz-1.2.3-javadoc.jar.asc
├─ xyz-1.2.3-javadoc.jar.md5
├─ xyz-1.2.3-javadoc.jar.sha1
├─ xyz-1.2.3.jar
├─ xyz-1.2.3.jar.asc
├─ xyz-1.2.3.jar.md5
├─ xyz-1.2.3.jar.sha1
├─ xyz-1.2.3.pom
├─ xyz-1.2.3.pom.asc
├─ xyz-1.2.3.pom.md5
├─ xyz-1.2.3.pom.sha1
Подробнее здесь: https://stackoverflow.com/questions/790 ... to-another
Мобильная версия