gpt4 book ai didi

spring - 自定义 spring-initializr 的工作方式?

转载 作者:行者123 更新时间:2023-12-03 07:07:37 25 4
gpt4 key购买 nike

作为一家企业,我们希望在我们的 PCF 实例上内部托管initializr,我可以做到。我还能够修改 application.yml 以默认某些选择。

我通过简单地创建自己的 spring-boot 应用程序来做到这一点,该应用程序使用 io.spring.initializr:initializr-web:0.3.0.RELEASE 作为运行时依赖项。

我有两个主要问题:

  1. UI 上是否有办法默认选择某些内容UI 首次出现时的依赖关系(即预先选择 Web 和例如安全)?
  2. 我可以自定义生成的输出吗?例如我们有我们自己定制的 Gradle 发行版并希望生成build.gradle 文件看起来与initializr 有点不同生成。我们还想生成一个 gradle.properties 文件作为项目的一部分。

最佳答案

有一个引用指南walk you through the creation of your own instance 。关于您的主要问题:

是的,这在自定义实例中是可能的。实现 ProjectRequestPostProcessor 并将这两个依赖项添加到项目中。

@Component
class PreselectedDependenciesRequestPostProcessor implements ProjectRequestPostProcessor {

private final InitializrMetadataProvider metadataProvider;

public PreselectedDependenciesRequestPostProcessor(
InitializrMetadataProvider metadataProvider) {
this.metadataProvider = metadataProvider;
}

@Override
public void postProcessAfterResolution(ProjectRequest request,
InitializrMetadata metadata) {
DependenciesCapability dependencies = metadataProvider.get().getDependencies();
if (!hasDependencies(request, "web")) {
request.getResolvedDependencies().add(dependencies.get("web"));
}
if (!hasDependencies(request, "security")) {
request.getResolvedDependencies().add(dependencies.get("security"));
}
}

private boolean hasDependencies(ProjectRequest request, String... dependenciesId) {
for (String id : dependenciesId) {
if (getDependency(request, id) == null) {
return false;
}
}
return true;
}

private Dependency getDependency(ProjectRequest request, String id) {
return request.getResolvedDependencies().stream()
.filter(d -> id.equals(d.getId())).findFirst().orElse(null);
}
}

它们不会在 UI 中被选择,但会像用户选择它们一样集成到项目中。我推荐这种方法的原因是,您的自定义实例可以像主 (start.spring.io) 实例一样通过 IDE 集成来定位。破解 Web UI 只会使该功能适用​​于特定客户端,在我看来,这是一个问题。

对于第二个问题,大多数分支都从 ProjectGenerator 扩展并做任何他们想做的事情(包括覆盖 gradle 构建)。检查该类以获取更多详细信息。

Spring Initializr 尚未达到 1.0,所以它还没有处于合约足够成熟的状态。

关于spring - 自定义 spring-initializr 的工作方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43418834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com