Пропустите «Установка расширений функций при необходимости».

Я использую для создания приложения-функции Java с настраиваемой привязкой триггера. Пользовательский триггер создается другим проектом .Net и публикует свои артефакты через канал артефактов Azure Devops как универсальный пакет.

Я использую настраиваемый триггер как универсальный пакет, чтобы избавиться от зависимостей .Net во время сборки приложения Java-функции.

Пока я скачиваю пакет и копирую его содержимое в 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>

Как отключить установку расширений функций ?

2 ответа

В pom.xmlдобавлять skipInstallExtensionsчтобы избежать запуска шаг в mvn 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>

Я нашел способ обхода неявной установки расширения плагина.

  1. В течение prepare-package На этапе я заменяю файл фиктивным файлом, который подавляет процесс установки.

            {
      "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фаза, которая выполняется после плагина. Скрипт также восстанавливает, удаляя extensionBundle свойство и копирует восстановленный файл в stagingDirectory.

Результирующий архив содержит bin папку универсального пакета, наконец, с правильным host.json.

Другие вопросы по тегам