1

我想将一个 Java 类放在使用 Vaadin@Endpoint注释(来自com.vaadin.flow.server.connect.Endpoint)的 Maven 工件中,以便在多个 Vaadin 项目中使用这个类。

这是此类的一个简单示例:

import com.vaadin.flow.server.connect.Endpoint;
import lombok.RequiredArgsConstructor;
import java.util.Optional;

@Endpoint
@RequiredArgsConstructor
public class SupportInfoEndpoint {

  public Optional<String> getSupportInfo(){
    return Optional.of("mailto:support@my.corp");
  }
}

Maven 工件包括类的源代码。我该怎么做才能在使用项目中通过 Vaadin 构建过程扫描此类,以便

  • 生成前端对应的 TypeScript 代码
  • 该类包含在 Spring-Boot 应用程序中(因此端点实际上在运行时可用)

有可能吗?

4

2 回答 2

5

就像 Erik 说的,它将使用#9010实现。

但是有一个解决方法取决于一些限制。如果端点需要的每个类都在同一个 jar 中,则可以通过调用目标“build-frontend”来触发在同一个 jar 中的打字稿生成vaadin-maven-plugin,然后生成打字稿,这只是一些 maven 魔术的问题将它们移动到(与此处META-INF/resources/frontend所做的类似的事情)。然后你就可以将端点打包在 jar 中。

为了在项目中注册端点,你需要做一些类似于这个类正在做的事情,基本上是一个将通过使用反射ServiceInitListener来执行的方法。registerEndpointEndpointRegistry

于 2021-08-26T23:03:29.007 回答
2

不幸的是,目前还不可能,但一旦#9010实施就可以了。

据我了解,它是 Fusion 团队实施的最高优先级功能之一。

于 2021-08-26T12:29:54.317 回答