Конвейер Azure — недопустимый целевой выпуск: 11

#azure #spring-boot #maven

#azure #весенняя загрузка #maven

Вопрос:

Я настраиваю конвейер для приложения spring-boot с помощью JDK 11. При запуске конвейера появляется ошибка ниже.

[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins: maven-compiler-plugin: 3.8.1: компиляция (по умолчанию-компиляция) в проекте xxxxx: Неустранимая ошибка компиляции: недопустимый целевой выпуск: 11 -> [Справка 1].

           <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>11</source>
                <target>11</target>
                <verbose>true</verbose>
            </configuration>
        </plugin>
 

Но это работает нормально команда локального развертывания: mvn clean package spring-boot: run.

Кто-нибудь может сказать мне, почему эта проблема возникает только в конвейере?

Ответ №1:

Эта проблема связана с тем, что в вашем агенте конвейера не предустановлена Java 11.

У вас есть два варианта решения этой проблемы.

Вариант 1. Измените агент конвейера на агент, у которого предварительно установлена Java 11.

Если вы используете размещенные в Microsoft конвейерные агенты, вы можете использовать эту ссылку, чтобы проверить, какие все агенты имеют предустановленную Java 11: размещенные в Microsoft агенты

Вариант 2. Установите Java 11 JDK в существующий агент конвейера.

Вы можете использовать задачу установки Java Tool для установки любой версии Java в существующем конвейере.

Комментарии:

1. Как добиться варианта 1 в файле pipline yml?

Ответ №2:

Возможно, JDK, работающий в вашем конвейере, — это, скажем, версия 8. В этом случае выполняемый компилятор Java не понимает, что означает версия 11. Возможно, ваша локальная среда использует Java 11, где эта проблема, следовательно, не возникнет.

Ответ №3:

У меня была та же проблема. Вам необходимо указать версию jdk в pipeline .yaml-файле:

Для сборки с помощью Maven добавьте следующий фрагмент в свой файл azure-pipelines.yml. Измените значения, такие как путь к вашему pom.xml файл, соответствующий конфигурации вашего проекта. Подробнее об этих параметрах см. в задаче Maven.

 steps:
- task: Maven@3   inputs:
    mavenPomFile: 'pom.xml'
    mavenOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.11'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: false
    testResultsFiles: '**/TEST-*.xml'
    goals: 'package'
 

https://docs.microsoft.com/en-us/azure/devops/pipelines/ecosystems/java?view=azure-devops#maven

Ответ №4:

Я решил эту проблему, добавив новый файл system.properties, а содержимое, добавленное в файл, — java.runtime.version= 11.

 java.runtime.version=11