Maven@4 - Maven v4 任务
使用 Apache Maven 生成、测试和部署。
语法
# Maven v4
# Build, test, and deploy with Apache Maven.
- task: Maven@4
inputs:
#azureSubscription: # string. Alias: ConnectedServiceName. Azure Resource Manager connection.
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.
# 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.
输入
azureSubscription
-
Azure 资源管理器连接
输入别名:ConnectedServiceName
。
string
。
指定配置有工作负荷标识联合身份验证的 Azure 资源管理器服务连接,以在集成测试中使用 AzurePipelinesCredential。 有关详细信息,请参阅 在集成测试中使用 AzurePipelinesCredential。
注意
此输入仅支持配置为使用工作负荷标识联合的 ARM 服务连接。
mavenPOMFile
-
Maven POM 文件
string
。 必填。 默认值:pom.xml
。
指定从存储库根目录到 Maven POM 文件的相对路径。 有关详细信息,请参阅 POM
goals
-
目标
string
。 默认值:package
。
(可选)设置为 package
编译代码并将其打包到 .war 文件中。 如果将此参数留空,则生成将失败。 有关详细信息,请参阅 Maven 生成生命周期
options
-
选项
string
。
(可选)指定要使用的任何 Maven 命令行选项。
publishJUnitResults
-
发布到 Azure Pipelines
boolean
。 默认值:true
。
指定将 Maven 生成生成的 JUnit 测试结果发布到 Azure Pipelines 的选项。 每个与 Test Results Files
匹配的测试结果文件都将发布为 Azure Pipelines 中的测试运行。
testResultsFiles
-
测试结果文件
string
。
publishJUnitResults = true
时是必需的。 默认值:**/surefire-reports/TEST-*.xml
。
指定要发布的测试结果文件的路径和模式。
可以使用通配符。
有关
例如,**/TEST-*.xml
名称以 TEST-
开头的所有 XML 文件。 如果未指定根路径,则文件在默认工作目录下匹配,变量中的值 $(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
时使用。
多模块项目需要此字段。
指定从 Maven POM 文件的相对路径到包含类文件和存档文件的目录(JAR、WAR 等)的逗号分隔列表。 这些目录中的类文件报告代码覆盖率。 例如,target/classes,target/testClasses
。
codeCoverageSourceDirectories
-
源文件目录
输入别名:srcDirectories
。
string
。 自选。 当 codeCoverageTool = JaCoCo
时使用。
多模块项目需要此字段。
指定从 Maven POM 文件到源代码目录的相对路径的逗号分隔列表。 代码覆盖率报告使用这些报告突出显示源代码。 例如,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
。
通过选择在生成期间发现的 JDK 版本或手动输入 JDK 路径来设置 JAVA_HOME
。 如果已在代理计算机上安装 Java,可以通过将 javaHomeOption
设置为 path
并 jdkDirectory
作为 JDK 安装目录的路径来指定它。
jdkVersionOption
-
JDK 版本
输入别名:jdkVersion
。
string
。 自选。 当 javaHomeSelection = JDKVersion
时使用。 允许的值:default
、1.17
(JDK 17)、1.11
(JDK 11)、1.10
(不受支持)、1.9
(JDK 9(不支持))、1.8
(JDK 8)、1.7
(JDK 7)、1.6
(JDK 6(不支持))。 默认值:default
。
尝试发现所选 JDK 版本的路径,并相应地设置 JAVA_HOME
。
注意: 如果在未由Microsoft托管的代理上运行,并且请求的 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
。
提供 JDK 的体系结构(x86
,x64
)。
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
环境变量,该变量用于发送命令行参数以启动 JVM。
-Xmx
标志指定 JVM 可用的最大内存。
mavenAuthenticateFeed
-
使用项目源进行身份验证
输入别名:mavenFeedAuthenticate
。
boolean
。 默认值:false
。
使用 Azure Artifacts 源自动进行身份验证。 如果项目源未使用,请取消选择此选项以加快生成速度。
effectivePomSkip
-
跳过使用 Artifacts 源进行身份验证时生成有效的 POM
输入别名:skipEffectivePom
。
boolean
。 默认值:false
。
仅使用 POM 通过 Artifacts 源进行身份验证。
sonarQubeRunAnalysis
-
运行 SonarQube 或 SonarCloud 分析
输入别名:sqAnalysisEnabled
。
boolean
。 默认值:false
。
此选项已从使用 Maven 任务版本 1 更改为使用 SonarQube 和 SonarCloud 市场扩展。
启用此选项可在 目标 字段中执行目标后运行 SonarQube 或 SonarCloud 分析。
安装 或 包 目标应首先运行。 在此 Maven 任务之前,还必须将 准备分析配置 任务从其中一个扩展添加到生成管道。
isJacocoCoverageReportXML
-
使用 XML Jacoco 报表进行 SonarQube 分析
boolean
。 自选。 当 sqAnalysisEnabled = true && codeCoverageTool = JaCoCo
时使用。 默认值:false
。
使用 XML Jacoco 报表进行 SonarQube 分析。 详细了解 测试报告。
适用于 Maven 版本的 sqMavenPluginVersionChoice
- SonarQube 扫描仪
string
。
sqAnalysisEnabled = true
时是必需的。 允许的值:latest
(使用最新版本),pom
(使用 pom.xml中声明的版本)。 默认值:latest
。
指定要使用的 SonarQube Maven 插件版本。 可以使用最新版本或依赖于 pom.xml
中的版本。
checkStyleRunAnalysis
-
运行 Checkstyle
输入别名:checkstyleAnalysisEnabled
。
boolean
。 默认值:false
。
使用默认的 Sun 检查运行 Checkstyle 工具。 如果在 pom.xml
文件中未指定 Checkstyle 配置,则使用默认的 Sun 检查。 结果将作为生成项目上传。
pmdRunAnalysis
-
运行 PMD
输入别名:pmdAnalysisEnabled
。
boolean
。 默认值:false
。
使用 PMD 静态分析工具在代码中查找 bug。 结果将作为生成项目上传。
findBugsRunAnalysis
-
运行 FindBugs
输入别名:findbugsAnalysisEnabled
。
boolean
。 默认值:false
。
使用 FindBugs 静态分析工具在代码中查找 bug。 结果将作为生成项目上传。
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”- 创建发现 bug 的报告),check
(“检查”- 检测到 bug 时管道失败)。 默认值:spotbugs
。
指定插件的目标。 详细了解 SpotBugs 目标。
使用 spotbugs:check 找到 bug 时,
输入别名:spotBugsFailWhenBugsFound | sbFailWhenBugsFound
。
boolean
。 自选。 当 spotBugsAnalysisEnabled = true && spotBugsGoal = check
时使用。 默认值:true
。
如果指定了 检查目标,则发现 bug 时失败。 详细了解
任务控制选项
除任务输入之外,所有任务都具有控制选项。 有关详细信息,请参阅 控件选项和常见任务属性。
输出变量
没有。
言论
SonarQube 分析的配置已移到任务 准备分析配置中的 SonarQube 或 SonarCloud 扩展。
重要
在 MAVEN_OPTS
中使用 -q
选项时,无法正确生成有效的 pom,并且 Azure Artifacts 源可能无法进行身份验证。
重要
如果要使用的 JDK 版本已安装在代理上,请将 javaHomeOption
设置为 path
,并将 jdkDirectory
设置为 JDK 版本的路径。 这些选项设置 maven 任务所需的 JAVA_HOME_11_X64
环境变量。 如果使用 Java 工具安装程序任务,则会自动设置此环境变量。
在集成测试中使用 AzurePipelinesCredential
适用于 .NET、C++、Go、Java、JavaScript 和 Python 的 Azure 标识库 支持工作负荷联合身份验证,因此,从 AzureCLI@2 和 AzurePowerShell@5 任务执行的代码可以使用 Microsoft Entra ID(例如,访问 Azure)使用 AzurePipelinesCredential
类进行身份验证。
许多客户都在从其他任务调用的集成测试中使用 Azure SDK 客户端库。
DotNetCoreCLI@2、Maven@4 和 VSTest@3 任务可以使用 AzurePipelinesCredential
类访问 Azure 资源。
可以将 connectedService
属性设置为使用工作负荷标识联合配置的 Azure 服务连接。
AzurePipelinesCredential
需要设置 SYSTEM_ACCESSTOKEN。
以下示例演示 DotNetCoreCLI@2
任务上的 connectedService
输入。
VSTest@3
和 Maven@4
用法类似。
- task: DotNetCoreCLI@2
inputs:
command: 'run'
connectedService: <Azure service connection configured with workload identity federation>
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
有关 AzurePipelinesCredential
的详细信息,请参阅此 使用 AzurePipelinesCredential改进 Azure 服务连接中的安全状况。
常见问题
我有一个多模块项目,但生成失败。 我应该检查什么?
请确保已将 #codeCoverageClassFilesDirectories
和 #codeCoverageSourceDirectories
指定为任务输入。 这两个参数对于单个模块项目是可选的,但多模块项目是必需的。
例子
要求
要求 | 描述 |
---|---|
管道类型 | YAML,经典版本,经典版本 |
运行时间 | 代理,DeploymentGroup |
需求 | 自承载代理必须具有与以下 |
功能 | 此任务不满足作业中后续任务的任何要求。 |
命令限制 | 任何 |
|
任何 |
代理版本 | 1.89.0 或更高版本 |
任务类别 | 建 |
另请参阅
- Maven 身份验证
- 使用 Azure Pipelines
发布 Maven 项目 - Java 工具安装程序
- 生成 Java 应用