作为一个企业,我们希望在PCF实例上在内部托管initializr,我可以这样做。我还能够修改application.yml以默认一些选择。
我只是通过创建自己的spring引导应用程序来做到这一点,它使用io.spring.initializr:initializr-web:0.3.0.RELEASE作为运行时依赖项。
我有两个主要问题:
发布于 2018-05-18 08:27:06
有一个参考指南,即带领您完成创建您自己的实例。关于你的主要问题:
是的,这在自定义实例中是可能的。实现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集成所针对。黑客网络用户界面只会使这个工作与特定的客户端,这是一个问题,海事组织。
对于第二个问题,大多数分叉都是从ProjectGenerator扩展而来的,他们想做什么就做什么(包括重写gradle构建)。有关更多细节,请查看该类。
还没有达到1.0,所以它还没有处于合同已经足够成熟的状态。
发布于 2017-07-26 14:10:47
我已经为我们的内部使用做了很多这样的工作,并将在gr8conf明天的一次演讲中介绍这一点。
输入自定义文件和添加默认选择非常容易,并且需要一点修改java、css和html的知识。您可以获得我在这里演示的工作的源代码:https://github.com/Grails-Plugin-Consortium/initializr/tree/master
需要修改的代码很长,所以要了解我要完成的工作,最简单的方法就是将添加“默认”选择和应用配置文件的差异链接起来。
将自定义文件添加到生成的应用程序中有点简单,只需要将这些文件添加到initializr生成器中的模板中,然后在ProjectGenerator.java中添加一个链接来复制该文件,类似于现有代码的实现方式。
protected void generateDockerFile(File dir, Map<String, Object> model){
write(new File(dir, "Dockerfile"), "Dockerfile", model);
write(new File(dir, "docker.sh"), "docker.sh", model);
write(new File(dir, "docker-run.sh"), "docker-run.sh", model);
}上面添加到ProjectGenerator中的方法将添加存储在initializr/initializr-generator/src/main/resources/templates/中的下列文件
对于世代而言,所有的繁重工作都在这个文件中存在:https://github.com/Grails-Plugin-Consortium/initializr/blob/9b302d31bb069c9c702f36ed765ad3f55debff84/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectGenerator.java
https://stackoverflow.com/questions/43418834
复制相似问题