Spring Sweets: Running Our Own Spring Initializr Server
The author walks us through step-by-step to run Spring Initializr.
Join the DZone community and get the full member experience.
Join For FreeTo start a new project based on Spring or Spring Boot we can use the website start.spring.io. We can easily create a project template based on Maven or Gradle and define all needed dependencies by clicking on checkboxes in the UI. In a previous post we also learned how to create a project using a URL using the same start.spring.io website. The start.spring.io website is actually a Spring Boot application and we can easily host our own server. With our own server we can, for example, limit the number of dependencies, force Gradle as the only build tool, and set default values for project name, packages, and much more.
To get started we must first clone the GitHub project. We need to build the project with Maven to install the libraries in our local Maven repository. After that is done we are reading to use it in our own Spring Boot application that is our customized Spring Initializr server. The easiest way to run the server is to have the Spring CLI tool installed. The easiest way to install it is using SDKMAN!. We type $ sdk install springboot
on the command line.
Next we create a new directory and inside the directory we create a new Groovy file initializr.groovy
:
package app
@Grab('io.spring.initalizr:initializr-web:1.0.0.BUILD-SNAPSHOT')
@Grab('spring-boot-starter-web')
class InitializerService {}
Next we need a configuration file with all the options for the Spring Initializr server. We can start by copying the file application.yml
from theinitializr-service
project on GitHub to our directory with the file initializr.groovy
. This file contains a lot of information. The configuration format is explained on the GitHub wiki, but it is really straight forward. If we open the file we can, for example, remove dependencies from the dependencies
or set default values for the groupId
. If we only want to support Gradle we can remove the Maven references from the types
section. And of course to have Groovy as the default language we can in the languages
section set the default
to true
for Groovy.
...
artifactId:
value: sample
groupId:
value: com.mrhaki
version:
value: 1.0.0.DEVELOPMENT
name:
value: Sample
description:
value: Sample Project
packageName:
value: com.mrhaki.demo
...
types:
- name: Gradle Project
id: gradle-project
description: Generate a Gradle based project archive
sts-id: gradle.zip
tags:
build: gradle
format: project
default: false
action: /starter.zip
- name: Gradle Config
id: gradle-build
description: Generate a Gradle build file
sts-id: build.gradle
tags:
build: gradle
format: build
default: true
action: /build.gradle
...
javaVersions:
- id: 1.8
default: true
languages:
- name: Java
id: java
default: false
- name: Groovy
id: groovy
default: true
...
And that is it! We are ready to start our own Spring Initializr server:
$ spring run initializr.groovy
...
For a finishing touch we can also override the static resources and templates of the server application. For example we can add a new spring.css
file in the directory static/css
. And place a file home.html
in the directory templates
. We can take the existing files as a sample and change what we want.
The following screenshot shows a customized template with some style changes:
We can even use our server to create a project from IntelliJ IDEA. When we create a new project and select Spring Initializr from the list box on the left we can type in the URL of our server:
Next we see our default values for the project details:
And finally we can select the dependencies we have defined in our application.yml
file:
Published at DZone with permission of Hubert Klein Ikkink, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments