Развертывание артефакта jar в Nexus приводит к несоответствию типов контента


Я использую Nexus Repository Manager v3. 1. 0-04. Когда я пытаюсь mvn deploy артефакт jar в мое хранилище, я получаю следующую проблему.

[ошибка] не удалось выполнить цель орг..sonatype.Плагины:Нексус-постановка-Maven-плагина:1.5.1:развернуть (вводят-Нексус-развертывание) на остальное-обслуживание проекта: не удалось развернуть артефакты: не удалось передать артефакт ком.xyz: rest-сервис: jar:0.0.1-20180504.193415-6 от / до nexus (http://nexus.mydomain.io/repository/snapshots/): Не удалось перенести файл: http://nexus.mydomain.io/repository/snapshots/com/xyz/rest-service/0.0.1-SNAPSHOT/rest-service-0.0.1-20180504.193415-6.jar. Код возврата: 400, ReasonPhrase: Detected content type [application / x-sh], но ожидается [application / java-archive]: com / xyz/rest-service / 0.0.1-SNAPSHOT / rest-service-0.0.1-20180504.193415-6.кувшин. - >[Справка 1]

Я подумал, что, возможно, это связано с версией nexus-staging-maven-plugin (link ) но даже если я установлю версия до 1.6.8 (Последняя), я получаю тот же эффект. Этот пост предполагает, что использовать build-helper-maven-plugin, и поэтому я модифицировал мой pom.xml следующим образом.

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>3.0.0</version>
    <executions>
        <execution>
        <id>attach-artifacts</id>
        <phase>package</phase>
        <goals>
            <goal>attach-artifact</goal>
        </goals>
        <configuration>
            <artifacts>
            <artifact>
                <file>target/${artifactId}-${version}.jar</file>
                <type>jar</type>
            </artifact>
            </artifacts>
        </configuration>
        </execution>
    </executions>
</plugin>

Однако, я вижу другую проблему сейчас.

[ошибка] не удалось выполнить цель орг..codehaus.Моджо:строить-помощник-Maven-плагина:3.0.0:прикрепить-артефакт (прикрепить-артефакты) на остальное-обслуживание проекта: выполнение прикрепить-артефакты из цели орг..codehaus.Моджо:строить-помощник-Maven-плагина:3.0.0:прикрепить-артефакт не удалось: для артефакта {com.xyz: rest-service: 0.0.1-SNAPSHOT: jar}: An присоединенный артефакт должен иметь другой идентификатор, чем соответствующий основной экспонат. - >[Справка 1]

Обратите внимание, что проект Maven генерируется инициализатором Spring через IntelliJ и является проектом Spring Boot. Без использования плагинаBuilder Helper я могу видеть, что все файлы успешно загружаются в Nexus до тех пор, пока jar не будет загружен (на самом деле он завершает загрузку, но из-за несоответствия типа контента, он потерпеть неудачу).

Есть идеи, как решить эту проблему? Сообщение, которое я упомянул, говорит: "некоторые репозитории maven проверяют содержимое файла", и поэтому, как я мог бы отключить Nexus (который я контролирую) в проверке содержимого файла? Но реальная проблема заключается в том, почему тип контента application/x-sh вместо application/java-archive?

1 2

1 ответ:

В настройках рассматриваемого репозитория (URL-адрес в сообщении об ошибке упоминает репозиторий" Snapshots"), разделStorage : отключите параметрStrict content type validation . Описание этой установки выглядит следующим образом: Validate that all content uploaded to this repository is of a MIME type appropriate for the repository format.

Чтобы ответить на второй вопрос, почему: загрузите файл JAR в Редакторе. Вы можете увидеть заголовок сценария оболочки (Bash). В этом случае jar-файл является "исполняемым JAR", а заголовок shell script-это сценарий запуска из Spring Boot. Из-за этого Nexus ошибочно определяет файл как сценарий оболочки.

Пример:

#!/bin/bash
#
#    .   ____          _            __ _ _
#   /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
#  ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
#   \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
#    '  |____| .__|_| |_|_| |_\__, | / / / /
#   =========|_|==============|___/=/_/_/_/
#   :: Spring Boot Startup Script ::
#
# ... etc

Вот скриншот такого файла, открытого в Sublime Text: Введите описание изображения здесь