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

GitHub Actions中Maven还原依赖失败:Azure Functions插件报错排查

Java Azure Functions在GitHub Actions构建失败问题排查

问题描述

基于Java Azure Functions + CosmosDB开发的应用本地运行正常,但在GitHub Actions中执行Maven打包时抛出错误,提示Azure Functions Core Tools不存在或版本过旧。

错误信息

Error:  Failed to execute goal com.microsoft.azure:azure-functions-maven-plugin:1.28.0:
        package (package-functions) on project azure-functions-java: Local Azure Functions Core Tools 
        does not exist or is too old to support function extension installation, skip package phase. 
        To install or update it, see: https://aka.ms/azfunc-install -> [Help 1]
Error:  
Error:  To see the full stack trace of the errors, re-run Maven with the -e switch.
Error:  Re-run Maven using the -X switch to enable full debug logging.
Error:  
Error:  For more information about the errors and possible solutions, please read the following articles:
Error:  [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
Error: Process completed with exit code 1.

项目pom.xml内容

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>azure-functions-java</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>azure-functions-java</name>
    <description>Demo project for Azure Functions</description>
    <properties>
        <java.version>21</java.version>

        <functionResourceGroup>xxx-rg</functionResourceGroup>
        <functionAppServicePlanName>yyy</functionAppServicePlanName>
        <functionAppName>zzz</functionAppName>
        <functionAppRegion>westus</functionAppRegion>
        <functionPricingTier>Y1</functionPricingTier>

        <start-class>org.example.Main</start-class>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.microsoft.azure.functions</groupId>
            <artifactId>azure-functions-java-library</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.10.1</version> 
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.microsoft.azure.functions</groupId>
                <artifactId>azure-functions-java-library</artifactId>
                <version>3.0.0</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <configuration>
                        <source>1.8</source> 
                        <target>1.8</target>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>com.microsoft.azure</groupId>
                    <artifactId>azure-functions-maven-plugin</artifactId>
                    <version>1.28.0</version>

                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>com.microsoft.azure</groupId>
                <artifactId>azure-functions-maven-plugin</artifactId>
                <configuration>
                    <resourceGroup>${functionResourceGroup}</resourceGroup>
                    <appName>${functionAppName}</appName>
                    <region>${functionAppRegion}</region>
                    <appServicePlanName>${functionAppServicePlanName}</appServicePlanName>
                    <pricingTier>${functionPricingTier}</pricingTier>

                    <hostJson>${project.basedir}/host.json</hostJson>
                    <localSettingsJson>${project.basedir}/local.settings.json</localSettingsJson>

                    <runtime>
                        <os>linux</os>
                        <javaVersion>21</javaVersion>
                    </runtime>
                    <appSettings>
                        <property>
                            <name>FUNCTIONS_EXTENSION_VERSION</name>
                            <value>~4</value>
                        </property>
                    </appSettings>
                </configuration>
                <executions>
                    <execution>
                        <id>package-functions</id>
                        <goals>
                            <goal>package</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

问题原因与解决步骤

1. 核心原因

GitHub Actions默认运行环境未预装Azure Functions Core Tools,且pom.xml存在Java版本与编译配置不一致的问题,加剧了兼容性冲突。

2. 解决措施

(1)在GitHub Actions workflow中安装Core Tools

在Maven打包步骤前添加安装脚本:

- name: 安装Azure Functions Core Tools
  run: |
    curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
    sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
    sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
    sudo apt-get update
    sudo apt-get install azure-functions-core-tools-4

(2)修正pom.xml版本不一致问题

更新maven-compiler-plugin的编译版本,与项目指定的Java21匹配:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source>21</source> 
        <target>21</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

可选:将azure-functions-maven-plugin升级至最新稳定版(如1.30.0),确保与Core Tools 4.x完全兼容。

(3)验证环境一致性

本地执行func --version确认Core Tools版本为4.x,同时在GitHub Actions中添加版本检查步骤:

- name: 检查Core Tools版本
  run: func --version

内容的提问来源于stack exchange,提问作者supermariowhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 22:38:13