Поделиться через


Maven@4 — задача Maven версии 4

Выполните сборку, тестирование и развертывание с помощью Apache Maven.

Синтаксис

# Maven v4
# Build, test, and deploy with Apache Maven.
- task: Maven@4
  inputs:
    mavenPOMFile: 'pom.xml' # string. Required. Maven POM file. Default: pom.xml.
    #goals: 'package' # string. Goal(s). Default: package.
    #options: # string. Options. 
  # JUnit Test Results
    #publishJUnitResults: true # boolean. Publish to Azure Pipelines. Default: true.
    testResultsFiles: '**/surefire-reports/TEST-*.xml' # string. Required when publishJUnitResults = true. Test results files. Default: **/surefire-reports/TEST-*.xml.
    #testRunTitle: # string. Optional. Use when publishJUnitResults = true. Test run title. 
    #allowBrokenSymlinks: true # boolean. Alias: allowBrokenSymbolicLinks. Optional. Use when publishJUnitResults = true. Allow broken symbolic links. Default: true.
  # Code Coverage
    #codeCoverageToolOption: 'None' # 'None' | 'Cobertura' | 'JaCoCo'. Alias: codeCoverageTool. Code coverage tool. Default: None.
    #codeCoverageClassFilter: # string. Alias: classFilter. Optional. Use when codeCoverageTool != None. Class inclusion/exclusion filters. 
    #codeCoverageClassFilesDirectories: # string. Alias: classFilesDirectories. Optional. Use when codeCoverageTool = JaCoCo. Class files directories. 
    #codeCoverageSourceDirectories: # string. Alias: srcDirectories. Optional. Use when codeCoverageTool = JaCoCo. Source files directories. 
    #codeCoverageFailIfEmpty: false # boolean. Alias: failIfCoverageEmpty. Optional. Use when codeCoverageTool != None. Fail when code coverage results are missing. Default: false.
    #codeCoverageRestoreOriginalPomXml: false # boolean. Alias: restoreOriginalPomXml. Optional. Use when codeCoverageTool != None. Restore original pom.xml after task execution. Default: false.
  # Advanced
    javaHomeOption: 'JDKVersion' # 'JDKVersion' | 'Path'. Alias: javaHomeSelection. Required. Set JAVA_HOME by. Default: JDKVersion.
    #jdkVersionOption: 'default' # 'default' | '1.17' | '1.11' | '1.10' | '1.9' | '1.8' | '1.7' | '1.6'. Alias: jdkVersion. Optional. Use when javaHomeSelection = JDKVersion. JDK version. Default: default.
    #jdkDirectory: # string. Alias: jdkUserInputPath. Required when javaHomeSelection = Path. JDK path. 
    #jdkArchitectureOption: 'x64' # 'x86' | 'x64'. Alias: jdkArchitecture. Optional. Use when jdkVersion != default. JDK architecture. Default: x64.
    mavenVersionOption: 'Default' # 'Default' | 'Path'. Alias: mavenVersionSelection. Required. Maven version. Default: Default.
    #mavenDirectory: # string. Alias: mavenPath. Required when mavenVersionSelection = Path. Maven path. 
    #mavenSetM2Home: false # boolean. Optional. Use when mavenVersionSelection = Path. Set M2_HOME variable. Default: false.
    #mavenOptions: '-Xmx1024m' # string. Alias: mavenOpts. Set MAVEN_OPTS to. Default: -Xmx1024m.
    #mavenAuthenticateFeed: false # boolean. Alias: mavenFeedAuthenticate. Authenticate with Artifacts feeds. Default: false.
    #effectivePomSkip: false # boolean. Alias: skipEffectivePom. Skip generating effective POM while authenticating with Artifacts feeds. Default: false.
  # Code Analysis
    #sonarQubeRunAnalysis: false # boolean. Alias: sqAnalysisEnabled. Run SonarQube or SonarCloud analysis. Default: false.
    #isJacocoCoverageReportXML: false # boolean. Optional. Use when sqAnalysisEnabled = true && codeCoverageTool = JaCoCo. Use XML Jacoco reports for SonarQube analysis. Default: false.
    #sqMavenPluginVersionChoice: 'latest' # 'latest' | 'pom'. Required when sqAnalysisEnabled = true. SonarQube scanner for Maven version. Default: latest.
    #checkStyleRunAnalysis: false # boolean. Alias: checkstyleAnalysisEnabled. Run Checkstyle. Default: false.
    #pmdRunAnalysis: false # boolean. Alias: pmdAnalysisEnabled. Run PMD. Default: false.
    #findBugsRunAnalysis: false # boolean. Alias: findbugsAnalysisEnabled. Run FindBugs. Default: false.
    #spotBugsRunAnalysis: false # boolean. Alias: spotBugsAnalysisEnabled. Run SpotBugs analysis. Default: false.
    #spotBugsVersion: '4.5.3.0' # string. Alias: spotBugsMavenPluginVersion. Optional. Use when spotBugsAnalysisEnabled = true. Version number. Default: 4.5.3.0.
    #spotBugsGoal: 'spotbugs' # 'spotbugs' | 'check'. Optional. Use when spotBugsAnalysisEnabled = true. The goal for the spotbugs plugin. Default: spotbugs.
    #failWhenBugsFound: true # boolean. Alias: spotBugsFailWhenBugsFound | sbFailWhenBugsFound. Optional. Use when spotBugsAnalysisEnabled = true && spotBugsGoal = check. Fail when bugs are found with spotbugs:check. Default: true.

Входные данные

mavenPOMFile - Файл MAven POM
string. Обязательный. Значение по умолчанию: pom.xml.

Указывает относительный путь от корневого каталога репозитория к файлу POM Maven. Дополнительные сведения см. в статье Введение в POM .


goals - Цели
string. Значение по умолчанию: package.

(Необязательно) Задайте значение , package чтобы скомпилировать код и упаковать его в WAR-файл. Если оставить этот аргумент пустым, сборка завершится ошибкой. Дополнительные сведения см. в статье Общие сведения о жизненном цикле сборки Maven .


options - Параметры
string.

(Необязательно) Указывает все параметры командной строки Maven, которые вы хотите использовать.


publishJUnitResults - Публикация в Azure Pipelines
boolean. Значение по умолчанию: true.

Указывает параметр для публикации результатов теста JUnit, полученных сборкой Maven, в Azure Pipelines. Каждое сопоставление Test Results Files файлов результатов теста будет опубликовано в виде тестового запуска в Azure Pipelines.


testResultsFiles - Файлы результатов тестирования
string. Требуется при .publishJUnitResults = true Значение по умолчанию: **/surefire-reports/TEST-*.xml.

Указывает путь и шаблон файлов результатов теста для публикации.
Можно использовать подстановочные знаки.
Дополнительные сведения о шаблонах сопоставления файлов.
Например, для всех XML-файлов, **/TEST-*.xml имя которых начинается с TEST-. Если корневой путь не указан, файлы сопоставляются под рабочим каталогом по умолчанию, значение которого доступно в переменной $(System.DefaultWorkingDirectory). Например, значение **/TEST-*.xml фактически приведет к сопоставлению файлов из $(System.DefaultWorkingDirectory)/**/TEST-*.xml.


testRunTitle - Заголовок тестового запуска
string. Необязательный элемент. Используйте при publishJUnitResults = true.

Указывает имя тестового запуска.


allowBrokenSymlinks - Разрешить неработаные символьные ссылки
Входной псевдоним: allowBrokenSymbolicLinks. boolean. Необязательный элемент. Используйте при publishJUnitResults = true. Значение по умолчанию: true.

Если задано значение , сборка завершается falseошибкой, когда задача находит неработающий символьный канал во время публикации результата тестов.


codeCoverageToolOption - Средство покрытия кода
Входной псевдоним: codeCoverageTool. string. Допустимые значения: None, Cobertura, JaCoCo. Значение по умолчанию: None.

Указывает средство покрытия кода. Включение покрытия кода вставляет чистую цель в список целей Maven при выполнении Maven.


codeCoverageClassFilter - Фильтры включения и исключения классов
Входной псевдоним: classFilter. string. Необязательный элемент. Используйте при codeCoverageTool != None.

Задает разделенный запятыми список фильтров для включения или исключения классов из сбора объема протестированного кода. Например, +:com.*,+:org.*,-:my.app*.*.


codeCoverageClassFilesDirectories - Каталоги файлов классов
Входной псевдоним: classFilesDirectories. string. Необязательный элемент. Используйте при codeCoverageTool = JaCoCo.

Это поле является обязательным для многомодульного проекта.
Задает разделенный запятыми список относительных путей от файла POM Maven к каталогам, содержащим файлы классов и архивные файлы (JAR, WAR и т. д.). Объем протестированного кода отображается для файлов классов в этих каталогах. Например, target/classes,target/testClasses.


codeCoverageSourceDirectories - Каталоги исходных файлов
Входной псевдоним: srcDirectories. string. Необязательный элемент. Используйте при codeCoverageTool = JaCoCo.

Это поле является обязательным для многомодульного проекта.
Задает разделенный запятыми список относительных путей из файла POM Maven в каталоги исходного кода. Отчеты об объеме протестированного кода используют их для выделения исходного кода. Например, src/java,src/Test.


codeCoverageFailIfEmpty - Сбой при отсутствии результатов покрытия кода
Входной псевдоним: failIfCoverageEmpty. boolean. Необязательный элемент. Используйте при codeCoverageTool != None. Значение по умолчанию: false.

Завершается сбоем сборки, если объем протестированного кода не дает результатов для публикации.


codeCoverageRestoreOriginalPomXml - Восстановление исходных pom.xml после выполнения задачи
Входной псевдоним: restoreOriginalPomXml. boolean. Необязательный элемент. Используйте при codeCoverageTool != None. Значение по умолчанию: false.

Объем протестированного pom.xml кода изменяет для получения результатов. Используйте этот параметр, если необходимо сохранить исходный pom.xml.


javaHomeOption - Задать JAVA_HOME
Входной псевдоним: javaHomeSelection. string. Обязательный. Допустимые значения: JDKVersion (версия JDK), Path. Значение по умолчанию: JDKVersion.

Задает JAVA_HOME либо путем выбора версии JDK, которая будет обнаружена во время сборки, либо путем ввода пути JDK вручную. Если на компьютере агента уже установлен Java, его можно указать, настроив javaHomeOption как path и jdkDirectory как путь к каталогу установленного пакета JDK.


jdkVersionOption - Версия JDK
Входной псевдоним: jdkVersion. string. Необязательный элемент. Используйте при javaHomeSelection = JDKVersion. Допустимые значения: default, 1.17 (JDK 17), 1.11 (JDK 11), 1.10 (JDK 10 (не поддерживается)), 1.9 (JDK 9 (не поддерживается)), 1.8 (JDK 8), 1.7 (JDK 7), 1.6 (JDK 6 (не поддерживается)). Значение по умолчанию: default.

Пытается найти путь к выбранной версии JDK и задает соответствующий параметр JAVA_HOME .
Примечание: Если выполняется на агенте, который не размещается корпорацией Майкрософт, и запрошенная версия Java не указана JAVA_HOME переменной, заданной на компьютере агента, задача будет полагаться на переменную JAVA_HOME_{version}_{arch} (например, JAVA_HOME_8_X64) для поиска необходимого пакета JDK. Убедитесь, что эта переменная задана для локальных агентов для любой версии и архитектуры JDK, которые могут быть запрошены с помощью этого параметра или jdkArchitecture.


jdkDirectory - Путь JDK
Входной псевдоним: jdkUserInputPath. string. Требуется при .javaHomeSelection = Path

Задает JAVA_HOME заданный путь.


jdkArchitectureOption - Архитектура JDK
Входной псевдоним: jdkArchitecture. string. Необязательный элемент. Используйте при jdkVersion != default. Допустимые значения: x86, x64. Значение по умолчанию: x64.

Предоставляет архитектуру (x86, x64) JDK.


mavenVersionOption - Версия Maven
Входной псевдоним: mavenVersionSelection. string. Обязательный. Допустимые значения: Default, Path (пользовательский путь). Значение по умолчанию: Default.

Указывает версию Maven по умолчанию или версию в указанном пользовательском пути.


mavenDirectory - Путь Maven
Входной псевдоним: mavenPath. string. Требуется при .mavenVersionSelection = Path

Предоставляет пользовательский путь к установке Maven (например, /usr/share/maven).


mavenSetM2Home - Задать переменную M2_HOME
boolean. Необязательный элемент. Используйте при mavenVersionSelection = Path. Значение по умолчанию: false.

Задает для переменной M2_HOME пользовательский путь установки Maven.


mavenOptions - Задайте для MAVEN_OPTS значение
Входной псевдоним: mavenOpts. string. Значение по умолчанию: -Xmx1024m.

MAVEN_OPTS Задает переменную среды, которая используется для отправки аргументов командной строки для запуска виртуальной машины Java. Флаг -Xmx указывает максимальный объем памяти, доступный для виртуальной машины Java.


mavenAuthenticateFeed - Проверка подлинности с помощью веб-каналов Artifacts
Входной псевдоним: mavenFeedAuthenticate. boolean. Значение по умолчанию: false.

Автоматическая проверка подлинности с помощью веб-каналов Azure Artifacts. Если веб-каналы артефактов не используются, снимите этот флажок для более быстрых сборок.


effectivePomSkip - Пропуск создания эффективного POM при проверке подлинности с помощью веб-каналов Артефактов
Входной псевдоним: skipEffectivePom. boolean. Значение по умолчанию: false.

Выполняет проверку подлинности с помощью веб-каналов Artifacts, используя только POM.


sonarQubeRunAnalysis - Выполнение анализа SonarQube или SonarCloud
Входной псевдоним: sqAnalysisEnabled. boolean. Значение по умолчанию: false.

Этот параметр изменился с версии 1 задачи Maven на использование расширений SonarQube и SonarCloud marketplace.
Включите этот параметр, чтобы выполнить анализ SonarQube или SonarCloud после выполнения целей в поле Цели . Сначала должна быть запущена цель установки или пакета . Перед выполнением этой задачи Maven необходимо также добавить задачу Подготовка конфигурации анализа из одного из расширений в конвейер сборки.


isJacocoCoverageReportXML - Использование XML-отчетов Jacoco для анализа SonarQube
boolean. Необязательный элемент. Используйте при sqAnalysisEnabled = true && codeCoverageTool = JaCoCo. Значение по умолчанию: false.

Использует XML-отчеты Jacoco для анализа SonarQube. Дополнительные сведения о тестовых отчетах.


sqMavenPluginVersionChoice - Сканер SonarQube для версии Maven
string. Требуется при .sqAnalysisEnabled = true Допустимые значения: latest (Использовать последний выпуск), pom (Используйте версию, объявленную в pom.xml). Значение по умолчанию: latest.

Указывает версию подключаемого модуля SonarQube Maven для использования. Вы можете использовать последнюю версию или использовать версию в .pom.xml


checkStyleRunAnalysis - Запуск Checkstyle
Входной псевдоним: checkstyleAnalysisEnabled. boolean. Значение по умолчанию: false.

Запускает средство Checkstyle с проверками По умолчанию. Если в pom.xml файле не указана конфигурация Checkstyle, используются проверки Sun по умолчанию. Результаты передаются в виде артефактов сборки.


pmdRunAnalysis - Запуск PMD
Входной псевдоним: pmdAnalysisEnabled. boolean. Значение по умолчанию: false.

Использует средство статического анализа PMD для поиска ошибок в коде. Результаты передаются в виде артефактов сборки.


findBugsRunAnalysis - Запуск FindBugs
Входной псевдоним: findbugsAnalysisEnabled. boolean. Значение по умолчанию: false.

Использует средство статического анализа FindBugs для поиска ошибок в коде. Результаты передаются в виде артефактов сборки.


spotBugsRunAnalysis - Выполнение анализа SpotBugs
Входной псевдоним: spotBugsAnalysisEnabled. boolean. Значение по умолчанию: false.

Включите этот параметр, чтобы запустить подключаемый модуль анализа кода SpotBugs. Дополнительные сведения о подключаемом модуле SpotBugs Maven.


spotBugsVersion - Номер версии
Входной псевдоним: spotBugsMavenPluginVersion. string. Необязательный элемент. Используйте при spotBugsAnalysisEnabled = true. Значение по умолчанию: 4.5.3.0.

Узнайте о доступных версиях SpotBugs.


spotBugsGoal - Цель подключаемого модуля spotbugs
string. Необязательный элемент. Используйте при spotBugsAnalysisEnabled = true. Допустимые значения: spotbugs ("spotbugs" — создает отчет об обнаруженных ошибках), check ("проверка" — конвейер завершается ошибкой при обнаружении ошибок). Значение по умолчанию: spotbugs.

Указывает цель подключаемого модуля. Узнайте больше о целях SpotBugs.


failWhenBugsFound - Сбой при обнаружении ошибок с spotbugs:проверка
Входной псевдоним: spotBugsFailWhenBugsFound | sbFailWhenBugsFound. boolean. Необязательный элемент. Используйте при spotBugsAnalysisEnabled = true && spotBugsGoal = check. Значение по умолчанию: true.

Происходит сбой при обнаружении ошибок, если указана цель проверки . Дополнительные сведения о параметрах SpotBug.


Параметры управления задачами

Помимо входных данных, все задачи имеют параметры управления. Дополнительные сведения см. в разделе Параметры управления и общие свойства задачи.

Выходные переменные

Нет.

Remarks

Конфигурация анализа SonarQube была перемещена в расширения SonarQube или SonarCloud в задаче Подготовка конфигурации анализа.

Важно!

При использовании -q параметра в MAVEN_OPTS, действующий pom будет создан неправильно, а веб-каналы Azure Artifacts могут не пройти проверку подлинности.

Важно!

Если версия JDK, которую вы хотите использовать, уже установлена в агенте, задайте для параметра javaHomeOptionpath значение и задайте jdkDirectory для путь к версии JDK. Эти параметры задают JAVA_HOME_11_X64 переменную среды, которая требуется для задачи Maven. Эта переменная среды задается автоматически, если вы используете задачу установщика средства Java.

Вопросы и ответы

У меня есть проект с несколькими модулями, но сборка завершается сбоем. Что следует проверка?

Убедитесь, что вы указали #codeCoverageClassFilesDirectories и #codeCoverageSourceDirectories в качестве входных данных задачи. Эти два параметра являются необязательными для проекта с одним модулем, но требуются для проектов с несколькими модулями.

Примеры

Требования

Требование Описание
Типы конвейеров YAML, классическая сборка, классический выпуск
Выполняется в Агент, DeploymentGroup
Требования Локальные агенты должны иметь возможности , соответствующие следующим требованиям для выполнения заданий, использующих эту задачу: maven
Capabilities Эта задача не удовлетворяет требованиям для последующих задач в задании.
Ограничения команд Любой
Устанавливаемые переменные Любой
Версия агента 1.89.0 или более поздней версии
Категория задач Сборка

См. также раздел