java - 如何在 Maven 子模块中添加 Java Azure Functions

标签 java azure maven azure-functions

问题描述

我有 Java 库 A,并创建了一个新的 Azure Functions 模块 B(在 https://learn.microsoft.com/en-us/azure/azure-functions/functions-create-maven-intellij 之后),该模块应使用 A 作为依赖项。

现在:

  • 如果我将 B 创建为一个新的独立模块,它就可以工作;
  • 如果我将 B 添加为公共(public)父 C 的另一个子模块,则不会。

更具体地说:我的函数的编译、运行和部署没有问题,但是当触发它们中的任何一个时,我会为 A 中定义的每个类得到一个 ClassNotFoundException 。毫不奇怪会发生这种情况,因为A.jar 不存在于 Azure Function 运行文件夹的 lib 子文件夹中(类似于我的 Windows PC 上的 {myUser}\AppData\Local\Temp\azure-functions16636049357177434984如果是本地运行)。但我不明白为什么依赖项 jar 没有复制到那里,特别是编译后它出现在我的 IntelliJ 项目的 target\azure-functions\taxclaims-azure-1596530670055\lib 文件夹中。/p>

为什么会发生这种情况以及如何解决?

<小时/>

最小示例

我有 TestParent Java Maven 项目,有两个模块:

  • 依赖模块
  • azure-functions-module(取决于依赖模块)

dependency-module中,我有一个带有空主体的DependencyClass,而在azure-functions-module 我有 HttpTriggerFunction 类,具有以下方法:

@FunctionName("TestFunction")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request, final ExecutionContext context) 
{
   DependencyClass instance = new DependencyClass();
   return request.createResponseBuilder(HttpStatus.OK).body("OK").build();
}

此模块可以成功部署,但是当触发 TestFunction 时,我获得 DependencyClassClassNotFoundException

但是,如果我创建另一个项目,名为TestStandaloneParent,其中包含模块standalone-azure-functions-module 和上面的功能一样,那么一切就顺利了。

如果需要,我当然可以添加更多详细信息,尤其是 pom.xml 文件。

最佳答案

请在这里查看另一个问题:How to add dependency JAR in java azure functions

看起来是打包的问题,​​需要手动使用maven assembly插件配置来调整。

关于java - 如何在 Maven 子模块中添加 Java Azure Functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64423231/

相关文章:

java - SharedPreferences:为什么我的值没有被覆盖?

azure - 如何使用 Azure Powershell 检索应用程序系统分配的标识对象 ID

java - 未找到 Google GSON 依赖项

java - 由于错误无法在eclipse中导入maven项目

java - 在 bean 构建中使用 Spring @Value

java - Tomcat-Spring-Hibernate Web 应用程序中的 'PermGen out of space' 异常可以做什么?

java - AxisTime 与 Java 时间换算

azure - 希望 Azure webjobs 在发布 Web 应用程序后保持运行状态(正在运行或已停止)

升级 azure-messaging-servicebus 后,Java 应用程序无法使用 Azure 消息

eclipse - 手动下载 Oracle 驱动程序,但仍然出现 Missing artifact com.oracle :ojdbc6:jar:11. 2.0.3:compile