You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipeline中Maven构建Windows正常Linux报错的解决咨询

解决Azure Pipeline Linux机器上Maven编译Java版本错误

问题原因

错误提示里的Source option 5和Target option 1.5对应Java 1.5版本,该版本已被Maven编译插件废弃。Linux代理环境中Maven默认使用的编译版本过低,而Windows机器可能通过全局配置或项目隐式设置了正确的Java版本,因此未出现报错。

具体解决方案

1. 在项目pom.xml中明确指定编译版本

直接在pom.xml里配置maven-compiler-plugin,指定项目实际使用的Java版本(推荐用release参数统一source和target版本,避免版本不一致):

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version> <!-- 使用较新的插件版本,兼容性更强 -->
            <configuration>
                <!-- 替换成你项目实际使用的Java版本,比如8、11、17 -->
                <release>17</release>
                <!-- 也可以分开指定source和target:
                <source>17</source>
                <target>17</target>
                -->
            </configuration>
        </plugin>
    </plugins>
</build>

2. 利用Spring Boot Parent统一版本(Spring Boot项目专属)

如果你的项目是Spring Boot应用,可以直接继承Spring Boot的parent依赖,它会自动配置合适的Java编译版本,无需单独配置compiler插件:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>你的Spring Boot版本号</version>
    <relativePath/> <!-- 从Maven仓库拉取依赖 -->
</parent>

3. 配置Azure Pipeline Linux代理的JDK版本

确保Linux代理上安装的JDK版本和项目编译版本匹配,可以在流水线中添加JavaToolInstaller任务指定JDK版本:

- task: JavaToolInstaller@0
  inputs:
    versionSpec: '17' # 匹配项目使用的Java版本
    jdkArchitectureOption: 'x64'
    jdkSourceOption: 'PreInstalled'

补充说明

Windows机器正常的原因通常是:本地Maven全局配置文件(settings.xml)中指定了默认的高版本Java,或者本地安装的JDK版本与编译要求匹配,而Linux代理的默认Maven配置未做修改,导致使用了过时的默认版本。

内容的提问来源于stack exchange,提问作者Muha-mmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 06:46:05