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

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

我是通过简单地创建自己的spring-boot应用程序来实现的,该应用程序使用io.spring.initializr:initializr-

web:0.3.0.RELEASE作为运行时依赖项。

我有两个主要问题:

  1. UI首次出现时,UI上是否有一种方法可以默认选择某些依赖项(例如,预先选择“ Web&Security”)?
  2. 我可以自定义世代的输出吗?例如,我们有自己的Gradle自定义发行版,并且希望生成的build.gradle文件看起来与initializr生成的文件有所不同。我们还想生成gradle.properties文件作为项目的一部分。

回答:

有一个参考指南可引导您完成自己的实例的创建。关于您的主要问题:

是的,这在自定义实例中是可能的。实现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);

}

}

它们不会在用户界面中被选中,但是它们将被集成到项目中,就像用户选择它们一样。我之所以推荐这种方法,是因为IDE集成可以以与主实例(start.spring.io)相同的方式来定位您的自定义实例。破解Web

UI只会使该特定的客户端(IMO)有问题。

对于第二个问题,大多数fork都会从中扩展ProjectGenerator并执行所需的任何操作(包括覆盖gradle构建)。检查该类以获取更多详细信息。

Spring Initializr尚未达到1.0,因此尚未处于合同足够成熟的状态。

以上是 自定义spring-initializr的工作方式? 的全部内容, 来源链接: utcz.com/qa/432804.html

回到顶部