0

我使用maven-plugin-for-azure-functions来创建具有自定义触发器绑定的 Java 函数应用程序。自定义触发器由另一个 .Net 项目创建,并通过 Azure Devops Artifacts 源作为通用包发布其工件。

我将自定义触发器用作通用包,以在我的 Java Function App 构建期间摆脱 .Net 依赖项。

当我下载包并将其内容复制到 中时stagingDirectory,它maven-plugin-for-azure-functions也尝试安装一些扩展。

[INFO] Step 8 of 8: Installing function extensions if needed
...
[INFO] Function extension installation done.

该步骤使用一些默认扩展名创建一个extensions.csproj并覆盖我的自定义扩展名的文件。我试图删除PackageReference元素,但每次package运行都会恢复。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <WarningsAsErrors></WarningsAsErrors>
    <DefaultItemExcludes>**</DefaultItemExcludes>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.EventGrid" Version="2.1.0" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator" Version="1.1.3" />
  </ItemGroup>
</Project>

如何禁用功能扩展安装

4

2 回答 2

1

另外为了避免run step pom.xmlin 。检查以下示例:skipInstallExtensionsmvn package

<plugin>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-functions-maven-plugin</artifactId>
    <version>1.13.0-SNAPSHOT</version>
    <configuration>
        <!-- potential configuration property -->
        <skipInstallExtensions>true</skipInstallExtensions>
    </configuration>
</plugin>
于 2021-10-29T14:35:55.427 回答
0

我为插件的隐式扩展安装找到了一些解决方法。

  1. 在此prepare-package阶段,我将 替换为host.json一些虚拟文件,这会抑制安装过程。

    {
      "version": "2.0",
      "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[1.*, 2.0.0)"
      }
    }
    

    因此插件会跳过扩展安装。

    [INFO] Step 8 of 8: Installing function extensions if needed
    [INFO] Extension bundle specified, skip install extension
    [INFO] Successfully built Azure Functions.
    
  2. 我将通用包下载的脚本移到了package插件之后执行的阶段。该脚本还host.json通过删除extensionBundle属性来恢复 ,并将恢复的文件复制到stagingDirectory.

生成的存档包含bin最终具有正确host.json.

于 2021-06-29T10:46:55.210 回答