Generate JVM (java, kotlin, scala) project with gradle / maven build systems and docker / docker-compose for rapid development
I aslo have a lot of jvm starters here, and not sure that will move all of them inside this generator
First, install Yeoman and generator-jvm using npm (we assume you have pre-installed node.js).
npm install -g yo
npm install -g generator-jvm
It's not recommended, but if you really need, you can install npm packages without audit by using:
npm install --no-audit
Then generate your new project using command line options (name
and type
):
yo jvm --name my-awesom-java-project --type java
yo jvm -n spring-boot-kotlin-project -t kotlin-spring-boot
cd my-awesom-java-project
Then generate your new project using prompt:
yo jvm
# enter projectDirectory or just press enter (default: app)
# chose projectType (default: java)
cd app
using gradle
idea build.gradle
bash gradlew
using maven
idea pom.xml
bash mvnw
docker-compose
# gradle
bash gradlew composeUp
# maven
bash mvnw docker-compose:up
java-ee (micro-profile) project
- java 8 based project
- javaee 7.0 / 8.0 using thorntail (aka wildfly-swarm) micro-profile
- support fatjar
- support executable bash jar
- support kotlin
- support maven build system
- support gradle build system (only swarm projects)
- vavr (aka javaslang), lombok
- support testing with junit 4 / 5
- docker / docker-compose support
type options:
java-thorntail
java-wildfly-swarm
kotlin-thorntail
kotlin-wildfly-swarm
java-payara-micro
- java 8 based project
- Java / JavaEE 8
- lombok (slf4j + logback logging)
- support fat (uber) jar
- support maven build system
- support gradle build system
- support testing with junit 5
- docker / docker-compose support
type options:
java-payara-micro
akka-actor project
- java 8 based project
- scala 2.12
- akka-actor 2.5.14
- lombok (slf4j + logback logging)
- vavr (javaslang)
- support fatjar
- support sbt build system
- support maven build system
- support gradle build system
- support application scripts when using gradle
- support testing with junit 4 / 5
- docker / docker-compose support
type options:
java-akka-actor
scala-gradle-akka-actor
scala-sbt-akka-actor
akka-persistence project
- java 8 based project
- scala 2.12
- akka-actor 2.5.14 / akka-persistence
- support fatjar
- support gradle build system
- docker / docker-compose support
type options:
scala-gradle-akka-persistence
java-ee thymeleaf project
- Java EE 8 based web project
- Thymeleaf
- JAX-RX
- support JBOSS EAP 7.1 (docker)
- support maven build system
- support gradle build system
- docker / docker-compose support
type options:
java-ee-thymeleaf
vertx project
- java 8 based Vert.x web project
- support fatjar
- support kotlin 1.3.11
- support maven build system
- support gradle build system
- docker / docker-compose support
type options:
java-vertx
kotlin-vertx
spring cloud function web project
- java 8 based spring-cloud-function-web project
- spring-boot 2 / spring framework 5
- support fatjar
- support executable bash jar
- support kotlin 1.3.11
- support maven build system
- support gradle build system
- docker / docker-compose support
type options:
java-spring-cloud-function-web
kotlin-spring-cloud-function-web
spring-boot 2 / spring framework 5 project
- java 8 based project
- spring-boot 2 / spring framework 5
- support fatjar
- support executable bash jar
- support kotlin 1.3.11
- support maven build system
- support gradle build system
- vavr (javaslang)
- lombok (slf4j + logback logging)
- support testing with junit 4 / 5
- docker / docker-compose support
type options:
java-spring-boot
kotlin-spring-boot
java-spring-boot-2.0.x
kotlin-spring-boot-2.0.x
spring-boot 1 / spring framework 4 project
- java 8 based project
- spring-boot 1 / spring framework 4
- support fatjar
- support executable bash jar
- support kotlin 1.2.71
- support maven build system
- support gradle build system
- vavr (javaslang)
- lombok (slf4j + logback logging)
- support testing with junit 4 / 5
- docker / docker-compose support
type options:
java-spring-boot-1.x
kotlin-spring-boot-1.x
java-ee-faces project
- javaee 8.0 project
- JSF using mojarrra 2.2.16 faces implementation
- lombok (slf4j + logback logging)
- support maven build system
- support gradle build system
- docker / docker-compose support (Glassfish 5.0 / JBOSS EAP 7.1)
java-ee EAR multi project
- javaee 8.0 project
- EAR with EJB + CDI configured
- EAR without CDI at all, but could be easily added (
java-ee-cdi-multi-project
) - EJB3 (business services module: ejb-services)
- EJB3 (JPA repositories module: ejb-data with embedded H2database for simplicity)
- JAX-RS REST API
- WEB/HTML5 static content
- Servlet and JSP with EJB usage
- lombok (slf4j + logback logging)
- vavr (javaslang)
- support maven build system
- support gradle build system
- docker / docker-compose support (JBOSS EAP 7.1)
type options:
java-ee-cdi-full-multi-project
java-ee-ejb-full-multi-project
java-ee project
- java 8 based project
- javaee 8.0
- lombok (slf4j + logback logging)
- vavr (javaslang)
- support kotlin 1.3.11
- support maven build system
- support gradle build system
- support testing with junit 4 / 5
- docker / docker-compose support (JBOSS EAP 7)
type options:
java-ee
kotlin-ee
parent multi project
- java 8 based parent multi project
- support fatjar
- support kotlin 1.3.11
- support executable bash jar
- support maven build system
- support gradle build system
- vavr (javaslang)
- lombok (slf4j + logback logging)
- support testing with junit 4 / 5
- docker / docker-compose support
type options:
java-parent-multi-project
kotlin-parent-multi-project
simple fat project
- java 8 based project
- lombok (slf4j + logback logging)
- vavr (javaslang)
- support fatjar
- support scala 2.12 / 2.11
- support maven build system
- support gradle build system
- docker / docker-compose support
- support application scripts when using gradle
- support application executable scripts when using gradle
- support testing using junit 4, scalactic, scalatest, specs2
type options:
java
kotlin
scala
scala-2.11
scala-sbt
- FindBugs maven / gradle plugins functionality
./gradlew check
./mvnw verify site
- Ascii documentation (asciidoctor maven / gradle plugins functionality)
./gradlew asciidoctor
- Artifact deployment (local maven repositories)
./gradlew publish
./mvnw deploy
- Yeoman has a heart of gold.
- Yeoman is a person with feelings and opinions, but is very easy to work with.
- Yeoman can be too opinionated at times but is easily convinced not to be.
- Feel free to learn more about Yeoman.
MIT © Maksim Kostromin